首页 > 解决方案 > Python比较DataFrames

问题描述

我每 5 分钟从 Yfinance(雅虎财经)收集数据。对于 10 只股票,我正在收集股票价格并将带有价格的股票列表放入 pd 数据框中。我过滤掉当天变化超过 2% 的股票,并通过电子邮件发送给我。我想要做的不是每 5 分钟收到一封电子邮件,而是仅在数据框中的数据发生重大变化的情况下。所以我想知道如何能够存储数据帧并将其与 5 分钟后创建的新数据帧进行比较。有人可以在这里帮助我吗?

标签: pythonpandas

解决方案


您没有提供有关您的应用程序的太多信息,但您可能会使用以下内容:

import pandas as pd

change_treshold = 0.02

def does_differ(frame, frame2):
    diff = abs((frame2 - frame) / frame)
    res = diff > change_treshold    
    return res.any()

frame = pd.DataFrame([2000, 300, 10000])
frame2 = pd.DataFrame([2001, 300, 9999])
frame3 = pd.DataFrame([2000, 270, 10000])

print(does_differ(frame, frame2))
print(does_differ(frame, frame3))

推荐阅读