具有两个以上数据框的熊猫的外部合并[重复]
Posted
技术标签:
【中文标题】具有两个以上数据框的熊猫的外部合并[重复]【英文标题】:Outer merge in pandas with more than two data frames [duplicate] 【发布时间】:2021-07-31 15:27:16 【问题描述】:我有一个如下图所示的 3 个 dfs
df1:
ID March_Number March_Amount
A 10 200
B 4 300
C 2 100
df2:
ID Feb_Number Feb_Amount
A 1 100
B 8 500
E 4 400
F 8 100
H 4 200
df3:
ID Jan_Number Jan_Amount
A 6 800
H 3 500
B 1 50
G 8 100
我尝试了下面的代码,效果很好。
df_outer = pd.merge(df1, df2, on='ID', how='outer')
df_outer = pd.merge(df_outer , df3, on='ID', how='outer')
但想将所有 df 一起传递并在短时间内合并。我尝试了下面的代码,错误如下所示。
df_outer = pd.merge(df1, df2, df3, on='ID', how='outer')
请指导我,如果我有 12 个月的数据,如何合并。即我必须合并 12 个 dfs。
错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-32-a63627da7233> in <module>
----> 1 df_outer = pd.merge(df1, df2, df3, on='ID', how='outer')
TypeError: merge() got multiple values for argument 'how'
预期输出:
ID March_Number March_Amount Feb_Number Feb_Amount Jan_Number Jan_Amount
A 10.0 200.0 1.0 100.0 6.0 800.0
B 4.0 300.0 8.0 500.0 1.0 50.0
C 2.0 100.0 NaN NaN NaN NaN
E NaN NaN 4.0 400.0 NaN NaN
F NaN NaN 8.0 100.0 NaN NaN
H NaN NaN 4.0 200.0 3.0 500.0
G NaN NaN NaN NaN 8.0 100.0
【问题讨论】:
【参考方案1】:我们可以创建一个 dfs
列表,在这种情况下,我们要合并 dfl
,然后我们可以将它们合并在一起。
我们可以在dfl=[df1, df2, df3,..., dfn]
中添加任意数量的dfs
from functools import reduce
dfl=[df1, df2, df3]
df_merged = reduce(lambda left,right: pd.merge(left,right,on=['ID'],
how='outer'), dfl)
输出
ID March_Number March_Amount Feb_Number Feb_Amount Jan_Number Jan_Amount
0 A 10.0 200.0 1.0 0.0 6.0 800.0
1 B 4.0 300.0 8.0 500.0 1.0 50.0
2 C 2.0 100.0 NaN NaN NaN NaN
3 E NaN NaN 4.0 400.0 NaN NaN
4 F NaN NaN 8.0 0.0 NaN NaN
5 H NaN NaN 4.0 200.0 3.0 500.0
6 G NaN NaN NaN NaN 8.0 100.0
【讨论】:
非常感谢,它对我有用。如果我必须合并 12 个这样的数据框,请您指导我。 nw,将所有 12 个 dfs 放入此列表 =dfl=[df1, df2, df3]
,我们就完成了。也更新了答案的要点以上是关于具有两个以上数据框的熊猫的外部合并[重复]的主要内容,如果未能解决你的问题,请参考以下文章