我正在在线跟踪某些产品,并根据我从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中添加,如果没有,则追加该行。
似乎很简单,但是我似乎找不到答案。
答案 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()