使用来自另一个数据框的新数据更新python数据框

时间:2018-09-14 04:05:00

标签: python dataframe

我正在尝试使用从其他数据帧(df2)接收到的数据更新现有数据帧(df1)。数据框df2可以具有新列,新行或新数据。这是我要完成的示例。

df1

    var1   var2    var3
a      8      4      12
b     -1     -4      -3
c      9     12      11
d     12     15       7
e      1      3      12
f      2      4       6

df2(请注意,这与df1几乎一样,除了它没有var1列,具有新列var4,具有var3的更新值,var2相同并且具有新行“ month s3”)。

    var2    var3    var4
a      4      10      12 
b     -4       0       4
c     12      15       9
d     15      12       5
e      3      17       7
f      4      16       8
g      0       0       4

这应该是更新的df

    var1   var2    var3    var4
a      8      4      10      12 
b     -1     -4       0       4
c      9     12      15       9
d     12     15      12       5
e      1      3      17       7
f      2      4      16       8
g      0      0       0       4

完成此任务的最佳方法是什么? (我特别想添加df2中可能存在的任何额外的行)。

1 个答案:

答案 0 :(得分:1)

由于两个数据框都共享索引,因此将它们组合起来的最简单方法是执行外部联接:

df = df1.join(df2, how='outer', lsuffix='_l').fillna(0).astype(int)

lsuffix在左侧数据框中用重复的'_l'标记重复的列。 fillna用零填充左侧数据框中的缺失值。最后,删除重复的列:

df = df.loc[:,~df.columns.str.endswith('_l')]