【问题标题】:Merge multiple column values into one column for duplicate rows in python pandas将多个列值合并为一列以在python pandas中重复行
【发布时间】:2019-04-08 17:26:45
【问题描述】:

我有一个这样的熊猫数据框:

     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

我怎样才能最好地解决这个问题?任何意见将是有益的。提前致谢!

【问题讨论】:

    标签: python pandas list dataframe row


    【解决方案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_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
    

    【讨论】:

      【解决方案2】:

      您也可以像其他similar answer一样尝试关注:

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

      【讨论】:

        【解决方案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 中的重复项。 希望有帮助

        【讨论】:

          猜你喜欢
          • 2016-01-10
          • 1970-01-01
          • 2019-03-25
          • 2020-07-02
          • 2022-01-23
          • 2016-09-22
          • 1970-01-01
          • 2021-09-08
          相关资源
          最近更新 更多