Pandas翻滚功能
window_size == step_size时的最后元素
当窗口大小和步长都是3时,我似乎无法获得一个示例9元素序列的最后三个元素。
以下是pandas
的预期行为吗?
我想要的结果
如果是这样,如何滚动Series
,以便:pd.Series([1., 1., 1., 2., 2., 2., 3., 3., 3.]).rolling(window=3, step=3).mean()
计算为pd.Series([1., 2., 3.,])
?
示例
import pandas as pd
def print_mean(x):
print(x)
return x.mean()
df = pd.DataFrame({"A": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]})
df["left"] = (
df["A"].rolling(window=3, step=3, closed="left").apply(print_mean, raw=False)
)
df["right"] = (
df["A"].rolling(window=3, step=3, closed="right").apply(print_mean, raw=False)
)
df["both"] = (
df["A"].rolling(window=3, step=3, closed="both").apply(print_mean, raw=False)
)
df["neither"] = (
df["A"].rolling(window=3, step=3, closed="neither").apply(print_mean, raw=False)
)
其计算结果为:
A left right both neither
0 0.0 NaN NaN NaN NaN
1 1.0 NaN NaN NaN NaN
2 2.0 NaN NaN NaN NaN
3 3.0 1.0 2.0 1.5 NaN
4 4.0 NaN NaN NaN NaN
5 5.0 NaN NaN NaN NaN
6 6.0 4.0 5.0 4.5 NaN
7 7.0 NaN NaN NaN NaN
8 8.0 NaN NaN NaN NaN
并打印:
一个二个一个一个
1条答案
按热度按时间wz1wpwve1#
您可以尝试使用
%
运算符每3行设置一个子集:这将输出: