我试图通过groupby
现有列join
及其值创建一个新列。
例如,原始数据帧(df)如下所示:
index col1 col2 col3
0 bar tic A
1 bar tac B
2 far toe C
3 far toe D
然后,如果col1
和col2
完全匹配,我想col3
用'-'联接值以创建col4。
所需的格式为:
index col1 col2 col3 col4
0 bar tic A A
1 bar tac B B
2 far toe C C-D
3 far toe D C-D
我使用了下面的代码,但没有得到想要的结果,并收到警告消息“ UserWarning:Pandas不允许通过新的属性名称创建列”,我该怎么办?
import pandas as pd
df.col4 = df.groupby(['col1', 'col2'])['col3'].apply(lambda x: '-'.join(x))
df.drop_duplicates()
用途GroupBy.transform
:
df['col4'] = df.groupby(['col1', 'col2'])['col3'].transform('-'.join)
col1 col2 col3 col4
0 bar tic A A
1 bar tac B B
2 far toe C C-D
3 far toe D C-D
如果要汇总行,请使用GroupBy.apply
链接到reset_index
:
df.groupby(['col1', 'col2'])['col3'].agg('-'.join).reset_index()
col1 col2 col3
0 bar tac B
1 bar tic A
2 far toe C-D
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句