【问题标题】:Merge three dataframes based on column in df1- Pandas Dataframes [duplicate]根据df1中的列合并三个数据框- Pandas Dataframes [重复]
【发布时间】:2017-02-01 16:38:29
【问题描述】:

我希望合并 3 个数据框,它们都有一个共同的“ORG_ID”列。 df1 是我的原始数据框,org_id 计数为 154。我想将 df1 与 df2 和 df3 合并,以获得 df1 中每个 org id 的评级,但我无法弄清楚如何做到这一点。

我设法合并了 df1 和 df2,但会得到 84 个 org_ids 而不是 154 个的新计数,因为 df2 中没有找到 70 个 org_ids,但可以在 df3 中找到。我不知道如何合并所有 3 个数据框以获得 df1 中所有 154 个 org_id 的评级。有任何想法吗?请记住,数据框的大小都不同,但我希望对 df1 中的所有 154 个原始 Org_id 进行评级。

Here was my code to merge df1 and df2 :
df4=pd.merge(df1, df2, left_on = 'ORG_ID', right_on = 'ORG_ID')

Here is a sample of what the dataframes look like:

df1: 
Org_id   Name   
123      House 1     
457      House 3     
876      House 16      
567      House 56     

df2:
Org_id   Name       Rating
123      House 1    10   
457      House 3    5    
857      House 87   6    

df3:
Org_id   Name       Rating1   org_type        location     area
123      House 1    10        single family   Hamilton     Suburban 
567      House 56   9         single family   Middletown   Suburban

【问题讨论】:

  • 您正在寻找左连接。 pd.merge(df1, df2, on= 'ORG_ID', how = 'left')
  • @A.Kot 我尝试了以下方法:df4=pd.merge(df1, df2, df3, on= 'ORG_ID', how = 'left')。我得到了错误:TypeError: merge() got multiple values for keyword argument 'how'
  • 您不能将三个数据框放入合并中。这是基本的数据库语法。应该是df4 = df1.merge(df2, on='ORG_ID', how='left).merge(df3, on='ORG_ID', how='left)
  • @A.Kot 感谢 cmets。那么您是说这里不可能合并三个数据框吗?你上面写的代码不起作用。问题在于第二个 .merge
  • 如果您查看 pandas.merge 的文档,您会发现只允许输入一个数据帧,即在一个合并语句中不能有多个数据帧。归根结底,您可以合并任意数量的数据框。请参阅下面的解决方案。

标签: python pandas join dataframe merge


【解决方案1】:
df4 = df1.merge(df2, on='ORG_ID', how='left')
df5 = df4.merge(df3, on='ORG_ID', how='left')

df5

【讨论】:

  • 谢谢 A.Kot - 非常感谢您的耐心等待!
  • 考虑在 dfs 列表中与 reduce 进行链合并:from functools import reduce; finaldf = reduce(lambda left,right: pd.merge(left, right, on='ORG_ID', how='left'), [df1,df2,df3])
  • @Parfait 最初在 cmets 中尝试这样做,但即使是不使用 lambda 函数的链也不适合他。
  • 在您的 cmets 中,left 缺少第二个引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2018-11-01
  • 2021-11-04
  • 2020-04-10
相关资源
最近更新 更多