如何将Pandas中一个单元格中的列值与另一列合并

k97glaaz  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个 Dataframe 。

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']})

我想将列module的所有值与列vin连接起来。
下面是我的预期输出。

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']})

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

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

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

clj7thdc

clj7thdc1#

可以将groupby.transformjoin一起使用:

df1['New_module'] = df1.groupby('vin')['module'].transform('-'.join)

输出:

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

相关问题