Search code examples
pandasdataframepandas-groupby

Pandas concatenate column values with comma after groupby()


I have a pandas dataframe like this:

Column1 Column2 Column3
a k x
a l y
b k z

I want to transform this dataframe to this:

Column1 Column2 Column3
a "k,l" "x,y"
b k z

I found similar examples but couldn't find an exact solution to my problem. Thank you so much for your help!


Solution

  • Try groupby then agg

    df_ = (df.groupby(['Column1'])
           .agg({'Column2': lambda x: ','.join(x), 'Column3': lambda x: ','.join(x)})
           .reset_index()
    )
    
    print(df_)
    
      Column1 Column2 Column3
    0       a     k,l     x,y
    1       b       k       z
    

    If you need the quote mark

    df_ = (df.groupby(['Column1'])
           .agg({'Column2': lambda x: f'"{",".join(x)}"' if len(x)>1 else x,
                 'Column3': lambda x: f'"{",".join(x)}"' if len(x)>1 else x})
           .reset_index()
    )
    
      Column1 Column2 Column3
    0       a   "k,l"   "x,y"
    1       b       k       z