Pandas滚动换位?

zte4gxcn  于 2022-12-21  发布在  其他
关注(0)|答案(2)|浏览(129)

Pandas有可能把滚动的Windows换成行吗?
pandas.DataFrame.rolling

>> df
    Close
0   3.69 
1   9.14 
2   9.49 
3   15.84
4   17.00
5   26.31

Pandas中有一个收费操作,可以给予我最后N个我想转置的值,但是我怎么能把它们插入到行中呢?

>> df
    Close    1       2      3 
0   3.69     NaN     NaN    NaN
1   9.14     3.69    NaN    NaN
2   9.49     9.14    3.69   NaN
3   15.84    9.49    9.14   3.69
4   17.00    15.84   9.49   9.14
5   26.31    17.00   15.84  9.49
kg7wmglp

kg7wmglp1#

我认为您需要shift

N = 3
for x in range(1, N + 1):
    df[x] = df['Close'].shift(x)
print (df)
   Close      1      2     3
0   3.69    NaN    NaN   NaN
1   9.14   3.69    NaN   NaN
2   9.49   9.14   3.69   NaN
3  15.84   9.49   9.14  3.69
4  17.00  15.84   9.49  9.14
5  26.31  17.00  15.84  9.49

因为rolling使用了一些聚合函数,如sum

N = 3
for x in range(1, N + 1):
    df[x] = df['Close'].rolling(x+1).sum()
print (df)
   Close      1      2      3
0   3.69    NaN    NaN    NaN
1   9.14  12.83    NaN    NaN
2   9.49  18.63  22.32    NaN
3  15.84  25.33  34.47  38.16
4  17.00  32.84  42.33  51.47
5  26.31  43.31  59.15  68.64
0sgqnhkj

0sgqnhkj2#

pd.concat([df1.shift(i) for i in range(4)],axis=1)

   Close  Close  Close  Close
0   3.69    NaN    NaN    NaN
1   9.14   3.69    NaN    NaN
2   9.49   9.14   3.69    NaN
3  15.84   9.49   9.14   3.69
4  17.00  15.84   9.49   9.14
5  26.31  17.00  15.84   9.49

相关问题