gpt4 book ai didi

python - 滚动窗口不包括当前行

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:39 26 4
gpt4 key购买 nike

这是一个数据框示例:

days = ['2019-07-04 17:02:03', '2019-07-04 17:03:03',
'2019-07-04 18:04:03', '2019-07-04 19:05:03',
'2019-07-04 21:06:03', '2019-07-04 21:36:03',
'2019-07-04 21:50:03', '2019-07-04 22:10:03']
ddf = pd.DataFrame({'Val': [0, 1, 2, 1, 4,1,3,1],'Cat':["A","A","A","A","B","B","B","B"]},
index= days)
ddf.index = pd.to_datetime(ddf.index)

Val Cat
2019-07-04 17:02:03 0 A
2019-07-04 17:03:03 1 A
2019-07-04 18:04:03 2 A
2019-07-04 19:05:03 1 A
2019-07-04 21:06:03 4 B
2019-07-04 21:36:03 1 B
2019-07-04 21:50:03 3 B
2019-07-04 22:10:03 1 B

如果我应用 1 小时窗口的滚动总和,我会得到:

ddf.groupby("Cat")["Val"].rolling("1h").sum().rename('sum_last_hour')

Cat
A 2019-07-04 17:02:03 0.0
2019-07-04 17:03:03 1.0
2019-07-04 18:04:03 2.0
2019-07-04 19:05:03 1.0
B 2019-07-04 21:06:03 4.0
2019-07-04 21:36:03 5.0
2019-07-04 21:50:03 8.0
2019-07-04 22:10:03 5.0
Name: sum_last_hour, dtype: float64
Name: sum_last_hour, dtype: float64

但我想获得这个:

Cat                     
A 2019-07-04 17:02:03 NaN
2019-07-04 17:03:03 0.0
2019-07-04 18:04:03 NaN
2019-07-04 19:05:03 NaN
B 2019-07-04 21:06:03 NaN
2019-07-04 21:36:03 4.0
2019-07-04 21:50:03 5.0
2019-07-04 22:10:03 4.0
Name: sum_last_hour, dtype: float64

因此,如果有意义的话,我基本上想从滚动总和中排除当前行......我尝试使用 shift() 但目前没有成功。感谢您的帮助!

最佳答案

其实我也是刚刚才知道的。您需要在 rolling() 函数中使用 close 参数并将其设置为 left。这样的事情给了我很好的结果:

ddf.groupby("Cat").rolling("1h", closed= "left")["Val"].sum().rename('sum_last_hour')

关于python - 滚动窗口不包括当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56886004/

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