如何比较两个相同大小的数据框并创建一个新的数据框,而在列中没有具有相同值的行

时间:2019-07-10 08:30:31

标签: python pandas dataframe

我正在创建一个数据采集设备,该设备每5分钟检索一次传感器数据(从API)并将其保存为CSV文件(每24小时导出到数据库),我想通过仅保存来减小这些文件的大小值更改时的数据。

我的想法是将所有数据保存在“内存” CSV文件中(该文件将在一天结束时删除),并将最后X行(df1-> T1)与新数据帧(df2- > T2),并创建数据框(df3-> T2),而各行的值保持不变。该df3将以另一种CSV格式编写,并在一天结束时导出到数据库中。

这是正确的方法吗?

如何比较两个相同大小的数据框,并创建第三个数据框而没有值不变的行?

{{1}}

2 个答案:

答案 0 :(得分:2)

DataFrame.merge与指示器一起使用,并仅过滤right_only行:

df = (df1.merge(df2, on=['Name','Value'], indicator=True, how='outer', suffixes=('_',''))
        .query('_merge == "right_only"')[df2.columns])

print (df)
  Time   Name  Value
4   t2  Name2      7
5   t2  Name4      2

答案 1 :(得分:1)

使用:

df3 = df2[df2['value'] != df1['value']]