您可以使用 groupby
和 join
:
df2 = df2.groupby('ID')['Tag'].apply(', '.join).reset_index()
print (df2)
ID Tag
0 3763058 item1, item2, item3
1 3763077 item_4, item_5, item_6
如果 df1
具有更多列,则可以使用merge
,特别是在这种情况下使用:
df = pd.merge(df1, df2, on='ID', how='left')
print (df)
ID Name Tag
0 3763058 Andi item1, item2, item3
1 3763077 Mark item_4, item_5, item_6
使用
map
解决方案,如果只需要添加一列:
df2 = df2.groupby('ID')['Tag'].apply(', '.join).reset_index()
df2['Name'] = df2['ID'].map(df1.set_index('ID')['Name'])
print (df2)
ID Tag Name
0 3763058 item1, item2, item3 Andi
1 3763077 item_4, item_5, item_6 Mark
如果
Name
列的位置很重要,请使用
insert
函数:
df2 = df2.groupby('ID')['Tag'].apply(', '.join).reset_index()
df2.insert(1, 'Name', df2['ID'].map(df1.set_index('ID')['Name']))
print (df2)
ID Name Tag
0 3763058 Andi item1, item2, item3
1 3763077 Mark item_4, item_5, item_6