是的,我从这个问题修改了我的问题中的 pandas 数据框示例:但是这次问题不同import pandas as pdimport numpy as npd=({'A':['2020-01-01','2020-01-02','2020-01-03','2020-01-04','2020-01-05','2020-01-06','2020-01-07','2020-01-08','2020-01-09','2020-01-10'],'B':[100,110,120,175,164,169,155,153,156,200]})df=pd.DataFrame(d) A B0 2020-01-01 1001 2020-01-02 1102 2020-01-03 1203 2020-01-04 1754 2020-01-05 1645 2020-01-06 1696 2020-01-07 1557 2020-01-08 1538 2020-01-09 1569 2020-01-10 200我知道 pandas 滚动窗口代码如下(对于我的情况): df['sums']=df['B'].rolling(window=3, center=False).sum() A B sums0 2020-01-01 100 NaN #Here's the question:1 2020-01-02 110 NaN #Why the rolling windows NaN is just 2, but the rolling window code is 32 2020-01-03 120 330.03 2020-01-04 175 405.04 2020-01-05 164 459.05 2020-01-06 169 508.06 2020-01-07 155 488.07 2020-01-08 153 477.08 2020-01-09 156 464.09 2020-01-10 200 509.0Name: sum, dtype: float64我想把它变成这样:0 2020-01-01 100 NaN # To display rolling window1 2020-01-02 110 NaN # Like the code2 2020-01-03 120 NaN # Not 2 but 3 NaNs3 2020-01-04 175 330.04 2020-01-05 164 405.05 2020-01-06 169 459.06 2020-01-07 155 508.07 2020-01-08 153 488.08 2020-01-09 156 477.09 2020-01-10 200 464.010 2020-01-11 NaN 509.0有办法做到吗?我尝试将NaN=np.nan其添加为这样:1 2020-01-02 110 NaN2 2020-01-03 120 NaN 3 2020-01-04 175 330.0..9 2020-01-10 200 464.010 2020-01-11 NaN 509.00 2020-01-01 100 NaN有什么办法解决这个问题吗?
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
该系列的开头有两个NaN,因为此时您没有足够的数据进行滚动(1 和 2 而不是 3)。从你做的行开始3。
如果您想3开始NaN,请使用以下链接链接您的滚动代码shift:
df['sums']=df['A'].rolling(window=3, center=False).sum().shift()
输出:
A sums
0 100 NaN
1 110 NaN
2 120 NaN
3 175 330.0
4 164 405.0
5 169 459.0
6 155 508.0
7 153 488.0
8 156 477.0
9 200 464.0
添加回答
举报
0/150
提交
取消