gpt4 book ai didi

窗口顶部的Python Pandas滚动总和位值

转载 作者:行者123 更新时间:2023-11-28 18:14:54 25 4
gpt4 key购买 nike

我想用Pandas的滚动方式。我需要稍微调整一下,但是,我希望将“值”放在“窗口”的顶部。

目前,我正在使用这个:

self.df['new_col'] = self.df['Zone3'].rolling(4).sum()

产生这个的:

       Date     Time     Period  Zone4  Zone3  new_col
0 2018-02-23 00:00 900 11 2 NaN
1 2018-02-23 00:15 900 11 1 NaN
2 2018-02-23 00:30 900 7 3 NaN
3 2018-02-23 00:45 900 2 0 6.0
4 2018-02-23 01:00 900 3 2 6.0
5 2018-02-23 01:15 900 7 0 5.0
6 2018-02-23 01:30 900 2 4 6.0

我真正想要的是:

       Date     Time     Period  Zone4  Zone3  new_col
0 2018-02-23 00:00 900 11 2 6.0
1 2018-02-23 00:15 900 11 1 6.0
2 2018-02-23 00:30 900 7 3 5.0
3 2018-02-23 00:45 900 2 0 6.0
4 2018-02-23 01:00 900 3 2 NaN
5 2018-02-23 01:15 900 7 0 NaN
6 2018-02-23 01:30 900 2 4 NaN

注意总和值在窗口的开头(位置 1),而不是结尾(位置 4)

如果滚动是错误的方法,很好,任何方法都会有所帮助。我知道如何以“pythonic”方式(使用 for 循环)执行此操作,我只是希望使用 pandas 在数据帧中执行此操作。

提前致谢

最佳答案

使用shift :

self.df['new_col'] = self.df['Zone3'].rolling(4).sum().shift(-3)

或者更一般的:

N = 4
df['new_col'] = df['Zone3'].rolling(N).sum().shift(-N+1)
print (df)
Date Time Period Zone4 Zone3 new_col
0 2018-02-23 00:00 900 11 2 6.0
1 2018-02-23 00:15 900 11 1 6.0
2 2018-02-23 00:30 900 7 3 5.0
3 2018-02-23 00:45 900 2 0 6.0
4 2018-02-23 01:00 900 3 2 NaN
5 2018-02-23 01:15 900 7 0 NaN
6 2018-02-23 01:30 900 2 4 NaN

N = 2
df['new_col'] = df['Zone3'].rolling(N).sum().shift(-N+1)
print (df)
Date Time Period Zone4 Zone3 new_col
0 2018-02-23 00:00 900 11 2 3.0
1 2018-02-23 00:15 900 11 1 4.0
2 2018-02-23 00:30 900 7 3 3.0
3 2018-02-23 00:45 900 2 0 2.0
4 2018-02-23 01:00 900 3 2 2.0
5 2018-02-23 01:15 900 7 0 4.0
6 2018-02-23 01:30 900 2 4 NaN

关于窗口顶部的Python Pandas滚动总和位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976142/

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