合并数据框动态

Posted

技术标签:

【中文标题】合并数据框动态【英文标题】:Merge dataframe dynamic 【发布时间】:2021-07-30 00:39:22 【问题描述】:

我有 2 个数据框:df1 和 df2。我想合并 df2 中列链接上的 2 个数据框。 df2 中的链接列包含与 df1 匹配的列和值的列表:

df1 = pd.DataFrame('p':[1,2,3,4], 'a':[1,2,2,2],'b':['z','z','z','z'],'c':[3,3,4,4],'d':[5,5,5,6])


df2 = pd.DataFrame('e':[11,22,33,44], 'link':['a=1,c=3','a=2,c=3','a=2,c=4,d=5','a=2,c=4'])

结果应该以这样的数据框结尾,其中 df2 中的 e 列与 df1 合并在一起:

df_res = pd.DataFrame('p':[1,2,3,3,4], 'a':[1,2,2,2,2],'b':['z','z','z','z','z'],'c':[3,3,4,4,4],'d':[5,5,5,5,6],'e':[11,22,33,44,44])

如何在 pandas 中做到这一点?

【问题讨论】:

为什么输出数据帧有五行,输入数据帧有四行? 链接应该在什么基础上发生? 【参考方案1】:
df1["e"] = df2["e"]

【讨论】:

在示例中,两者都有 4 行。尝试在这里查看 df1 中的一行在结果中以两行结束:i.imgur.com/jk2m7jU.png i.imgur.com/jk2m7jU.png">【参考方案2】:
frames = [df1, df2]
result = pd.concat(frames)

【讨论】:

尝试查看我的屏幕转储。 df2 中的每一行都应根据 df2 中的列链接中的竞争进行动态链接。

以上是关于合并数据框动态的主要内容,如果未能解决你的问题,请参考以下文章

在数据框字典中合并数据框

在python中循环遍历数据框字典并将字典中的每个数据框与单个数据框合并

将大型 Dask 数据框与小型 Pandas 数据框合并

如何合并仅几列的两个数据框

合并两个数据框而不重复熊猫

按日期不等的日期合并数据框