我有一个这样的熊猫数据框:
Col1 Col2
0 a Jack
1 a Jill
2 b Bob
3 c Cain
4 c Sam
5 a Adam
6 b Abel
我现在要做的是将第2列中的值与第1列中的每个值合并,即输出应如下所示:
Col1 Col2
0 a Jack, Jill, Adam
1 b Bob, Abel
2 c Cain, Sam
如何最好地解决这个问题?任何意见将是有益的。预先感谢!
答案 0 :(得分:1)
使用
df = df.groupby('Col1')['Col2'].apply(', '.join)
print(df)
Col1
a Jack, Jill, Adam
b Bob, Abel
c Cain, Sam
Name: Col2, dtype: object
使用reset_index
返回Col1
作为列而不是索引
df = df.groupby('Col1')['Col2'].apply(', '.join).reset_index()
print(df)
Col1 Col2
0 a Jack, Jill, Adam
1 b Bob, Abel
2 c Cain, Sam
答案 1 :(得分:0)
您也可以像其他similar answer一样尝试以下操作:
new_df = df.groupby('Col1', as_index=False).agg(', '.join)
答案 2 :(得分:0)
这是另一种方法,请尝试一下:
df.groupby("Col1").agg(lambda x: ', '.join(x.unique())).reset_index()
Col1 Col2
0 a Jack, Jill, Adam
1 b Bob, Abel
2 c Cain, Sam
要记住的事情。如果您的数据集是这样的:
Col1 Col2
0 a Jack
1 a Jill
2 b Bob
3 c Cain
4 c Sam
5 a Adam
6 b Abel
7 a Adam
8 c Sam
您将获得以下输出:
df.groupby("Col1").agg(lambda x: ', '.join(x)).reset_index()
Col1 Col2
0 a Jack, Jill, Adam, Adam
1 b Bob, Abel
2 c Cain, Sam, Sam
因此,使用unique
可以删除Col2
中的重复项。
希望有帮助