是的,我從這個問題修改了我的問題中的 pandas 數(shù)據(jù)框示例:但是這次問題不同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條經(jīng)驗 獲得超4個贊
該系列的開頭有兩個NaN,因為此時您沒有足夠的數(shù)據(jù)進行滾動(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
提交
取消