假设我有这个系列:
S = pd.Series([1,1,2,3,5,8,13,21,34])
我想将它转换为一个矩阵,其中每一行将包含最后的 N
(比方说:5)个值。
所以输出应该是:
[[NaN,NaN,NaN,NaN,NaN],
[NaN,NaN,NaN,NaN, 1],
[NaN,NaN,NaN, 1, 1],
[NaN,NaN, 1, 1, 2],
[NaN, 1, 1, 2, 3],
[ 1, 1, 2, 3, 5],
[ 1, 2, 3, 5, 8],
[ 2, 3, 5, 8, 13],
[ 3, 5, 8, 13, 21]]
我尝试过使用rolling
,但没有弄清楚如何获得预期的结果。
最佳答案
shift
与 concat
out = pd.concat([S.shift(x) for x in range(1,6)[::-1]],1)
Out[124]:
0 1 2 3 4
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN 1.0
2 NaN NaN NaN 1.0 1.0
3 NaN NaN 1.0 1.0 2.0
4 NaN 1.0 1.0 2.0 3.0
5 1.0 1.0 2.0 3.0 5.0
6 1.0 2.0 3.0 5.0 8.0
7 2.0 3.0 5.0 8.0 13.0
8 3.0 5.0 8.0 13.0 21.0
关于python - Pandas - 取 N 个以前的值并从 Series 中创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63767299/