如何合并两个数据框并在其中保留非-nan值

时间:2019-11-26 07:08:40

标签: python pandas dataframe merge

df1



0      Name       phone     Marks

1      mark       1225      20.0

2     charles     165498    36.5

3     oscar       1567      nan

4     bucky       13579     22.0

5     austin      13654     nan


df2

0      Name       phone     Marks

1      mark       1225      nan

2     charles     165498    nan

3     oscar       1567      25,64,65,78,32

4     bucky       13579     22.0

5     austin      13654     21,989,3,48,6357,649,2

如何以这种方式合并这两个df

0      Name       phone     Marks

1      mark       1225      20.0

2     charles     165498    36.5

3     oscar       1567      25,64,65,78,32

4     bucky       13579     22.0

5     austin      13654     21,989,3,48,6357,649,2

如果我尝试左合并。我会错过奥斯卡和奥斯汀的标记,如果我尝试正确的话,我会错过马克和查尔斯的标记。也尝试过外部,但无法弄清楚

如何基于名称合并它们?

3 个答案:

答案 0 :(得分:3)

您可以简单地做到:

df1.update(df2)

输出:

0     Name   phone                   Marks
1     mark    1225                      20
2  charles  165498                    36.5
3    oscar    1567          25,64,65,78,32
4    bucky   13579                    22.0
5   austin   13654  21,989,3,48,6357,649,2

答案 1 :(得分:1)

我认为使用combine_first

更容易实现
 df1 = pd.DataFrame({'A': [None, 0], 'B': [None, 4]})
 df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
 df1.combine_first(df2)

答案 2 :(得分:0)

you can also use,
df1.fillna(df2.fillna(df1))