首页 > 解决方案 > 如何合并两个具有重复列的数据框以连接每个字符串值?

问题描述

有两个具有相同列名(名称、部门)的数据框。如果有任何重复的名称,我正在尝试合并两个数据框并将 dept 值连接到 dept 列。我想在第一个数据帧上保留相同数量的行,但如果有重复,则只将第二个数据帧的值添加到第一个数据帧。

到目前为止,我尝试使用 pandas .merge(on='name') 和 .groupby('name')['dept'].apply(', '.join) 但这会删除所有其他行。

使用合并仅显示具有重复项的值。我想返回具有相同数量元素的未更改列表,只需将重复值添加到“dept”列

例如:

df1 = df2.merge(on='name')

df1.groupby('name')['dept'].apply(', '.join)

df1:
name      dept

bob       sales
billy     support
jill      accounting
hank      paper


df2:
name      dept

bob       support   
ruby      hr
hank      telesales
billy     accounting


final df:
name      dept
bob       sales, support
billy     support, accounting
jill      accounting
hank      paper, telesales

标签: pythonpandasdataframemerge

解决方案


当然必须有一个更简单的方法,但与此同时......

定义转换(x):

if type(x) == pd.core.series.Series:

    return ','.join(set(x.values))

else:

    return x

def merge_them(df1,df2):

temp = pd.concat([df1,df2])

index = pd.Index(set(df1.index)|set(df2.index))

return pd.Series(index.map(lambda x: convert(df3['dept'].loc[x])),
                            index = index)

推荐阅读