gpt4 book ai didi

python - 识别时间序列数据中的更新值 Python Pandas

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:08 25 4
gpt4 key购买 nike

我没有做很多时间序列工作,而且我知道我思考这个解决方案的方式不是最佳的。希望获得有关解决此问题的最有效方法的意见。

我有几天的值,每天有多个值由时间戳标识。

数据如下所示:

Index      Period     Value         Timestamp
0 1 73 2017-08-10 16:44:23
1 1 73 2017-08-09 16:30:12
2 1 73 2017-08-08 16:40:31
3 2 50 2017-08-10 16:44:23
4 2 45 2017-08-09 16:30:12
5 2 45 2017-08-08 16:40:31
6 3 13 2017-08-10 16:44:23
7 3 13 2017-08-09 16:30:12
8 3 13 2017-08-08 16:40:31

该示例显示了连续三天捕获的三个不同时期的一个数据元素。这个想法是确定任何测量周期(周期 1、2 或 3)的值是否发生变化。

正如您在示例中看到的,在第三天 (2017-08-10),周期 2 的值已更新。我想检测改变的值。

我能弄清楚如何进行比较的唯一方法是循环,我认为这既不优雅、效率低下,而且绝对不是Pythonic。

有人深入了解一种无需循环/迭代的方法吗?

提前致谢。

编辑

如果最近的时间戳数据发生值变化,则预期输出将是如下 df:

Index      Period     Value         Timestamp
0 1 73 2017-08-10 16:44:23
3 2 50 2017-08-10 16:44:23
6 3 13 2017-08-10 16:44:23

最佳答案

首先,您可以识别具有如下更改的行:

df['diff'] = df.groupby('Period')['Value'].diff(-1).fillna(0)

Period Value Timestamp diff
0 1 73 2017-08-10 16:44:23 0.0
1 1 73 2017-08-09 16:30:12 0.0
2 1 73 2017-08-08 16:40:31 0.0
3 2 50 2017-08-10 16:44:23 5.0
4 2 45 2017-08-09 16:30:12 0.0
5 2 45 2017-08-08 16:40:31 0.0
6 3 13 2017-08-10 16:44:23 0.0
7 3 13 2017-08-09 16:30:12 0.0
8 3 13 2017-08-08 16:40:31 0.0

然后选择要显示的行(与发生更改的行具有相同时间戳的所有行):

lst = df[ df['diff'] != 0. ]['Timestamp'].tolist()
df[ df['Timestamp'].isin(lst) ]

Period Value Timestamp diff
0 1 73 2017-08-10 16:44:23 0.0
3 2 50 2017-08-10 16:44:23 5.0
6 3 13 2017-08-10 16:44:23 0.0

关于python - 识别时间序列数据中的更新值 Python Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com