Python 合并数据帧,保留所有项

Python 合并数据帧,保留所有项,python,python-3.x,pandas,merge,Python,Python 3.x,Pandas,Merge,如何合并两个不同的数据帧,在填充空格时保留每个数据帧中的所有行 DF1 DF2 预期产量 Name Addr Num Parent Parent_Num Parent_Addr Matt 123H 8 James 10 543F Adam 213H 9 James 10 543F James 321H 10 Mom

如何合并两个不同的数据帧,在填充空格时保留每个数据帧中的所有行

DF1

DF2

预期产量

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

我试图合并并保留两个数据帧中的所有数据。任何帮助都将不胜感激。多谢各位

您可以使用
'outer'
合并保留所有行

请注意,默认情况下,
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

您需要合并所有公共列并使用外部联接

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

列表中的列是否应该是两个数据帧之间相同的所有列?我看到您只指定了三列,而且我对合并是新手。
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
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