Python 如何使用pandas中的静态窗口计算最后和前N个值来填充
我有一个日工类型的日历数据-这一天是否是假日。 我想创建一个新的功能:Python 如何使用pandas中的静态窗口计算最后和前N个值来填充,python,pandas,Python,Pandas,我有一个日工类型的日历数据-这一天是否是假日。 我想创建一个新的功能: 单元格中的值是一周中的假期数 单元格中的值是N窗口(右窗口和左窗口)中的假日数。示例中-N=5(包括当前值) 例如: is_holiday feature_1 feature_2 idx 0 0 2 0 1 0 2
is_holiday feature_1 feature_2
idx
0 0 2 0
1 0 2 1
2 0 2 2
3 0 2 2
4 0 2 2
5 1 2 2
6 1 2 2
7 0 3 3
8 0 3 4
9 0 3 5
10 0 3 4
11 1 3 3
12 1 3 3
13 1 3 3
...
我认为您需要对每7个值进行分组,并聚合
sum
,然后使用第二个值:
谢谢!这就是我想要的need@gushart-太好了!我还考虑不使用上面的
11
-5
+实际值+5下面的,但输出不匹配更多,因此使用10
。顺便说一句,最后的值也不匹配,可能是f2中的打字错误,哦,现在我明白了。。。嗯,给我一个小的,相当尖锐的,如果我的答案是错误的,怎么算呢?我只希望输入错误,因为只有一个3
是不同的。@gushart-答案被编辑了,你能检查一下吗?
df['f1'] = df.groupby(df.index // 7)['is_holiday'].transform('sum')
df['f2'] = df['is_holiday'].rolling(9, center=True, min_periods=1).sum().astype(int)
print (df)
is_holiday feature_1 feature_2 f1 f2
idx
0 0 2 0 2 0
1 0 2 1 2 1
2 0 2 2 2 2
3 0 2 2 2 2
4 0 2 2 2 2
5 1 2 2 2 2
6 1 2 2 2 2
7 0 3 3 3 3
8 0 3 4 3 4
9 0 3 5 3 5
10 0 3 4 3 4
11 1 3 3 3 3
12 1 3 3 3 3
13 1 3 3 3 3