我有一个类似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
问题陈述
我想基于多个列(Code
和Country
)合并行,并希望合并两列(CID
和New_Country
)
我的代码:
df=df.groupby(['Code','Country'])['CID'].apply(', '.join).reset_index()
上面的代码仅适用于一列,但需要帮助合并两列,如结果df所示
答案 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