【发布时间】: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