繁体   English   中英

如何将 Pandas 中的两个数据帧与多个匹配项匹配?

[英]How Do I match two Data Frames in Pandas with multiple matches?

我有 2 个数据帧,我想将一个数据帧中的一些数据和 append 匹配到另一个数据帧上。

df1 看起来像这样:

来源 ID
1234 约翰 能源部
5678 莎莉 绿色的
9101 克洛多维奇 安德森

df2 看起来像这样:

来源 ID 代理 ID
123456789 1234,5678
987654321 9101
143216546 1234,5678

我希望我的最终数据框看起来像这样:

来源 ID 代理 ID
1234 约翰 能源部 123456789,143216546
5678 莎莉 绿色的 123456789,143216546
9101 克洛多维奇 安德森 987654321

通常附加东西很容易,但我不太确定如何匹配这些数据,然后 append 匹配它们之间的逗号。 我对使用 pandas 还很陌生,因此不胜感激。

这行得通。 它很长而且不是最优雅的,但效果很好:)

tmp = df2.assign(agentId=df2['agentId'].str.split(',')).explode('agentId').set_index('agentId')['sourceId'].astype(str).groupby(level=0).agg(list).str.join(',').reset_index()
df1['sourceId'] = df1['sourceId'].astype(str)
new_df = df1.merge(tmp, left_on='sourceId', right_on='agentId').drop('agentId',axis=1).rename({'sourceId_x':'sourceId', 'sourceId_y':'agentId'},axis=1)

Output:

>>> new_df
  sourceId   firstName  lastName              agentId
0     1234        John       Doe  123456789,143216546
1     5678       Sally     Green  123456789,143216546
2     9101  Chlodovech  Anderson            987654321

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM