根据索引值python更新并追加新行

Ara*_*eel 3 python concat pandas

我有两个数据帧DF1,DF2它们具有相同类型的数据并共享一些索引值但不是全部

        DF1    
 index, a, b, c
[ abc   1, 3, 6 ]
[ acb   2, 4, 5 ]
[ cab   6, 5, 2 ]
[ bac   3, 6, 2 ]
[ bca   6, 8, 3 ]

        DF2
 index, a, b, d
[ abc   4, 7, 3 ]
[ kde   2, 5, 8 ]
[ lat   7, 2, 6 ]
[ bac   0, 4, 4 ]
[ bca   3, 6, 8 ]
Run Code Online (Sandbox Code Playgroud)

因此,我希望实现以下目标

1.)DF1根据索引匹配添加列D.

2.)添加DF2不存在的索引和行DF1

        RESULT   
 index, a, b, c, d
[ abc   1, 3, 6, 3 ]
[ acb   2, 4, 5, - ]
[ cab   6, 5, 2, - ]
[ bac   3, 6, 2, 4 ]
[ bca   6, 8, 3, 8 ]
[ kde   2, 5, -, 8 ]
[ lat   7, 2, -, 6 ]
Run Code Online (Sandbox Code Playgroud)

Sco*_*ton 7

让我们用combine_first:

创建数据:

DF1 = pd.DataFrame({'a':[1,2,6,3,6],'b':[3,4,5,6,8],'c':[6,5,2,2,3]},index=['abc','acb','cab','bac','bca'])
DF2 = pd.DataFrame({'a':[4,2,7,0,3],'b':[7,5,2,4,6],'d':[3,8,6,4,8]},index=['abc','kde','lat','bac','bca'])

df_combo = DF1.combine_first(DF2)
print(df_combo)

       a    b    c    d
abc  1.0  3.0  6.0  3.0
acb  2.0  4.0  5.0  NaN
bac  3.0  6.0  2.0  4.0
bca  6.0  8.0  3.0  8.0
cab  6.0  5.0  2.0  NaN
kde  2.0  5.0  NaN  8.0
lat  7.0  2.0  NaN  6.0
Run Code Online (Sandbox Code Playgroud)