通过按类型分组创建一个新列,新列的值是整个组的列值
Create a new column by grouping on type, new column's value is entire group's column value
我有一个 pandas 数据框,基本上看起来像这样:
type item string
1 0 aa
1 1 bb
1 2 cc
2 0 dd
2 1 ee
2 2 ff
我想以某种方式根据组的 'string' 列
创建一个新列 'newstring'
type item string newstring
1 0 aa aa+bb+cc
1 1 bb aa+bb+cc
1 2 cc aa+bb+cc
2 0 dd dd+ee+ff
2 1 ee dd+ee+ff
2 2 ff dd+ee+ff
我完成了
df.groupby('type').aggregate(lambda x: "+".join(x))
df.groupby('type').apply(lambda x: "+".join(x))
但我不断得到新字符串的结果(字面意思)
type item string newstring
1 0 aa type+item+string+newstring
1 1 bb type+item+string+newstring
1 2 cc type+item+string+newstring
2 0 dd type+item+string+newstring
2 1 ee type+item+string+newstring
2 2 ff type+item+string+newstring
如何按特定列分组,然后将该组中一列的值附加到新列。
提前致谢!
对不起,你在找这个吗:
In [14]:
df['new_string'] = df.groupby('type')['string'].transform(lambda x: '+'.join(x))
df
Out[14]:
type item string new_string
0 1 0 aa aa+bb+cc
1 1 1 bb aa+bb+cc
2 1 2 cc aa+bb+cc
3 2 0 dd dd+ee+ff
4 2 1 ee dd+ee+ff
5 2 2 ff dd+ee+ff
上面的组在 'type' 上,然后我们在 'string' 列上调用 transform
并调用一个 lambda 函数,join
是字符串值。
您尝试失败的原因是您的函数正在应用于其余列,而不是专门针对字符串列。还有 transform
这里 returns 一个索引与原始 df 对齐的系列。
我有一个 pandas 数据框,基本上看起来像这样:
type item string
1 0 aa
1 1 bb
1 2 cc
2 0 dd
2 1 ee
2 2 ff
我想以某种方式根据组的 'string' 列
创建一个新列 'newstring'type item string newstring
1 0 aa aa+bb+cc
1 1 bb aa+bb+cc
1 2 cc aa+bb+cc
2 0 dd dd+ee+ff
2 1 ee dd+ee+ff
2 2 ff dd+ee+ff
我完成了
df.groupby('type').aggregate(lambda x: "+".join(x))
df.groupby('type').apply(lambda x: "+".join(x))
但我不断得到新字符串的结果(字面意思)
type item string newstring
1 0 aa type+item+string+newstring
1 1 bb type+item+string+newstring
1 2 cc type+item+string+newstring
2 0 dd type+item+string+newstring
2 1 ee type+item+string+newstring
2 2 ff type+item+string+newstring
如何按特定列分组,然后将该组中一列的值附加到新列。
提前致谢!
对不起,你在找这个吗:
In [14]:
df['new_string'] = df.groupby('type')['string'].transform(lambda x: '+'.join(x))
df
Out[14]:
type item string new_string
0 1 0 aa aa+bb+cc
1 1 1 bb aa+bb+cc
2 1 2 cc aa+bb+cc
3 2 0 dd dd+ee+ff
4 2 1 ee dd+ee+ff
5 2 2 ff dd+ee+ff
上面的组在 'type' 上,然后我们在 'string' 列上调用 transform
并调用一个 lambda 函数,join
是字符串值。
您尝试失败的原因是您的函数正在应用于其余列,而不是专门针对字符串列。还有 transform
这里 returns 一个索引与原始 df 对齐的系列。