python-3.x - 基于多列合并行并连接多列

标签 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)合并行,并想要合并两列(CID新_国家)

我的代码:

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

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

最佳答案

您可以使用:

series.str.cat 用于连接 2 列,然后 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()axis=1 上使用 .join 对于多个列,步骤与​​上述相同

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

关于python-3.x - 基于多列合并行并连接多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59487001/

相关文章:

python - 使用python删除矩阵中的相应行/列

python - Pandas - 将列名添加到 groupby 的结果中

python - 如果指定时没有值,则具有不同默认值的 Argparse 可选参数

python - 有效合并 pandas 中的子序列

python - 如何忽略存在空白值的行 Pandas Python

python - 在groupby中按日期时间过滤的有效方法

python - 如何创建 5 个新列来反射(reflect)每个客户过去的 5 笔交易?

Python - 在二维列表中查找所有偶数的总和

python - 异步协程

python - 使用 np.matmul(data.T, data) 的协方差矩阵