对于python中的重复行,将多个列值合并到一列中

2024-05-23 17:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据框:

     Col1       Col2

 0    a        Jack     
 1    a        Jill     
 2    b        Bob     
 3    c        Cain     
 4    c        Sam     
 5    a        Adam     
 6    b        Abel  

我现在要做的是为第1列中的每个值合并第2列中的值,即,输出应如下所示:

     Col1     Col2

0     a      Jack, Jill, Adam
1     b      Bob, Abel
2     c      Cain, Sam

我怎样才能最好地解决这个问题?任何建议都会有帮助。提前谢谢!你知道吗


Tags: 数据sam建议col2col1bobjackadam
3条回答

这里有一个不同的方法,试试看:

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中的重复项。 希望有帮助

使用

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_indexCol1作为列而不是索引返回

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

您也可以在其他similar answer中尝试以下操作:

new_df = df.groupby('Col1', as_index=False).agg(', '.join)

相关问题 更多 >