比较两个熊猫数据框并追加不存在的行

时间:2019-03-06 20:59:49

标签: python pandas

我正在在线跟踪某些产品,并根据我从api获取的一些数据创建一个数据框,它会构建如下内容:

{{...}}

每次搜索产品时,我都会返回一个相似的数据框,但会添加新数据。

                          rank    change     usedprice   sold 
2015-11-16 08:34:00     335865  0.159583         17.51  False
2015-11-16 14:37:00     376721  0.121644         17.51  False
2015-11-17 00:10:00     422663  0.121952         17.51  False
2015-11-17 09:52:00     526799  0.246381         17.51  False
2015-11-18 00:10:00     590056  0.120078         17.51  False
2015-11-18 08:50:00     656206  0.112108         17.51  False
2015-11-18 23:10:00     723676  0.102818         17.51  False

如何将新数据框与旧数据框进行比较,仅附加原始行中不存在的行?

由于数据来自多个来源,因此我无法删除第一个数据框并仅用新的数据框替换它,有时它只会被馈送几行新信息,我需要查看该行是否已存在在原始df中添加,如果没有,则追加该行。

似乎很简单,但是我似乎找不到答案。

2 个答案:

答案 0 :(得分:0)

我将使用外部join导入新行,并使用fillna方法使用新列中的值填充空白单元格。

让我们将df_orig称为原始数据帧,并将df_new称为包含新值的数据帧。这应该足够了:

df_temp = df_orig.join(df_new, how='outer', rsuffix='_na')
for col in df_orig.columns:
    df_temp[col].fillna(df_temp[col + '_na'], inplace=True)

df_orig = df_temp.drop(columns=[col + '_na for col in df_orig.columns])

答案 1 :(得分:0)

如果您可以假设任一帧中都没有重复项,则只需合并并删除重复项即可:

pd.concat([df1,df2]).drop_duplicates()