【问题标题】: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 中做到这一点?

【问题讨论】:

  • 为什么输出数据帧有五行,输入数据帧有四行?
  • 链接应该在什么基础上发生?

标签: python pandas merge


【解决方案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 中的列链接中的竞争进行动态链接。
猜你喜欢
  • 2022-01-26
  • 2020-01-27
  • 1970-01-01
  • 2018-10-03
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多