python - 如何合并两个具有重复列的数据框以连接每个字符串值?
问题描述
有两个具有相同列名(名称、部门)的数据框。如果有任何重复的名称,我正在尝试合并两个数据框并将 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
解决方案
当然必须有一个更简单的方法,但与此同时......
定义转换(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)
推荐阅读
- html - HTML/CSS:如何防止 DIV 滚动条离开屏幕?
- typescript - TypeScript 对象工厂
- java - Spring Framework:如何根据用户在浏览器中输入的Web域从JDBCTemplate访问不同的数据库?
- ios - Ionic Native HTTP 在 Ios Simulator 上返回 -1 状态错误
- python-3.x - 在辅助 y 轴上绘制最后一项的条形图
- react-native - 卡表单退出后客户端应用调用 Stripe API,用于未来支付
- node.js - GET https://graph.microsoft.com/v1.0/me 给定具有 User.Read 权限的有效访问令牌返回 401(未授权)
- function - 使用 dr.racket 解决函数式编程问题
- flutter - 如何在不同 UI 和不同手机尺寸之间同步 Flutter 应用
- tsql - 根据 TSQL 中的另一个表值更改返回的字段