【问题标题】:Coalesce rows based on multiple columns and join multiple columns基于多列合并行并连接多列
【发布时间】:2019-12-26 10:21:03
【问题描述】:

我有一个喜欢的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 所示

【问题讨论】:

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


    【解决方案1】:

    你可以使用:

    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().joinaxis=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
    

    【讨论】:

    • 谢谢,成功了!!使用第二种解决方案,因为我在 groupby 中有多个列,并且也有多个列要加入!
    • @RahulAgarwal 没问题,是的,第二个有助于多列​​连接:)
    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 2014-12-31
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多