合并数据框以保留所有项目熊猫
Posted
技术标签:
【中文标题】合并数据框以保留所有项目熊猫【英文标题】:Merging dataframes keeping all items pandas 【发布时间】:2017-08-13 21:49:54 【问题描述】:如何合并两个不同的数据框,在填充空白的同时保留每个数据框的所有行?
DF1
Name Addr Num Parent Parent_Addr
Matt 123H 8 James 543F
Adam 213H 9 James 543F
James 321H 10 Mom 654F
Andrew 512F 10 Dad 665F
Faith 555A 7 None 657F
DF2
Name Parent Parent_Num Parent_Addr
Matt James 10 543F
Adam James 10 543F
James Mom 12 654F
None Ian 13 656F
None None None 1234
预期输出
Name Addr Num Parent Parent_Num Parent_Addr
Matt 123H 8 James 10 543F
Adam 213H 9 James 10 543F
James 321H 10 Mom 12 654F
Andrew 512F 10 Dad None 665F
Faith 555A 7 None None 657F
None None None Ian 13 656F
None None None None None 1234
我正在尝试合并并保留两个数据框中的所有数据。任何帮助将不胜感激。谢谢。
【问题讨论】:
【参考方案1】:您可以使用'outer'
merge
保留所有行注意默认情况下merge
将加入所有常见的列名。
df1.merge(df2, 'outer')
Name Addr Num Parent Parent_Addr Parent_Num
0 Matt 123H 8.0 James 543F 10
1 Adam 213H 9.0 James 543F 10
2 James 321H 10.0 Mom 654F 12
3 Andrew 512F 10.0 Dad 665F NaN
4 Faith 555A 7.0 None 657F NaN
5 None NaN NaN Ian 656F 13
6 None NaN NaN None 1234 None
【讨论】:
【参考方案2】:你需要合并所有公共列并使用外连接
pd.merge(df1, df2, on = ['Name', 'Parent', 'Parent_Addr'], how = 'outer')
Name Addr Num Parent Parent_Addr Parent_Num
0 Matt 123H 8 James 543F 10
1 Adam 213H 9 James 543F 10
2 James 321H 10 Mom 654F 12
3 Andrew 512F 10 Dad 665F NaN
4 Faith 555A 7 None 657F NaN
5 None NaN NaN Ian 656F 13
6 None NaN NaN None 1234 None
【讨论】:
列表是否应该是两个数据框之间相同的所有列?我看到您只指定了三列,并且是合并的新手。以上是关于合并数据框以保留所有项目熊猫的主要内容,如果未能解决你的问题,请参考以下文章