基于多列合并行并连接多列

时间:2019-12-26 10:21:03

标签: python-3.x pandas pandas-groupby

我有一个类似df

Code  Country     CID      New_Country
123   Aus         C11      Europe
123   Aus         C12      India
456   Europe      C98      US
456   Europe      C123     US
456   Europe      C43      Europe
112   US          C345     China

我想要这样的结果df:

Code  Country     Merged_Column             
123   Aus         C11,Europe;C12,India          
456   Europe      C98,US;C123,US;C43,Europe
112   US          C345,China

问题陈述

我想基于多个列(CodeCountry)合并行,并希望合并两列(CIDNew_Country

我的代码:

df=df.groupby(['Code','Country'])['CID'].apply(', '.join).reset_index()

上面的代码仅适用于一列,但需要帮助合并两列,如结果df所示

1 个答案:

答案 0 :(得分:2)

您可以使用:

series.str.cat用于将2个cols排成一行,然后assign + groupby()

df.assign(Merged_Column=df['CID'].str.cat(df['Country'],sep=',')).groupby(
   ['Code','Country'],sort=False,as_index=False)['Merged_Column'].agg(';'.join)

或: df.agg().join上的axis=1用于多个列,其操作步骤与上述相同

df.assign(Merged_Column=df[['CID','New_Country']].agg(','.join,1)).groupby(
     ['Code','Country'],sort=False,as_index=False)['Merged_Column'].agg(';'.join)

   Code Country              Merged_Column
0   123     Aus       C11,Europe;C12,India
1   456  Europe  C98,US;C123,US;C43,Europe
2   112      US                 C345,China