【问题标题】:How can I merge column value in one cell in pandas with respect to another column如何将熊猫中一个单元格中的列值相对于另一列合并
【发布时间】:2022-11-03 18:35:27
【问题描述】:

我有一个数据框。

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','ccc','ccc','ddd','eee','eee','fff'],
                    'module':['ABS','ABS','IPMA','BCCM','HPOC','ABS','ABS','HPOC','ABS','ABS']})

我想连接列的所有值模块关于列葡萄酒.

以下是我的预期输出。

df1 = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','ccc','ccc','ddd','eee','eee','fff'],
                    'module':['ABS','ABS','IPMA','BCCM','HPOC','ABS','ABS','HPOC','ABS','ABS'],
                   'New_module':['ABS-ABS-IPMA','ABS-ABS-IPMA','ABS-ABS-IPMA','BCCM','HPOC-ABS','HPOC-ABS','ABS','HPOC-ABS','HPOC-ABS','ABS']})

我尝试了一种方法,其中我必须复制数据框并应用下面的代码。

df_merge = pd.merge(df2, df1.groupby(['vin'])['module'].apply(list), on ='vin', how ='left')
df_merge['module'] = df_merge['module'].astype('str').str.replace("\[|\]|\'| ","")
df_merge

任何简单的代码来获得我想要的输出?

【问题讨论】:

    标签: python pandas group-by apply


    【解决方案1】:

    您可以将groupby.transformjoin 一起使用:

    df1['New_module'] = df1.groupby('vin')['module'].transform(lambda x: ','.join(x))
    

    输出:

       vin module    New_module
    0  aaa    ABS  ABS,ABS,IPMA
    1  aaa    ABS  ABS,ABS,IPMA
    2  aaa   IPMA  ABS,ABS,IPMA
    3  bbb   BCCM          BCCM
    4  ccc   HPOC      HPOC,ABS
    5  ccc    ABS      HPOC,ABS
    6  ddd    ABS           ABS
    7  eee   HPOC      HPOC,ABS
    8  eee    ABS      HPOC,ABS
    9  fff    ABS           ABS
    

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2021-08-30
      • 2020-06-12
      • 2018-02-18
      • 2017-04-14
      • 2020-02-05
      • 2023-01-28
      • 2020-09-19
      相关资源
      最近更新 更多