python - Pandas - 取 N 个以前的值并从 Series 中创建矩阵

标签 python pandas

假设我有这个系列:

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,但没有弄清楚如何获得预期的结果。

最佳答案

shiftconcat

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/

相关文章:

python - 选择具有特定值的特定列 pandas

python - 当您需要基于另一列更新列时,在 Pandas 中循环的替代方法

python - 如何让 Pandas 创建新工作表而不是覆盖?

python - 使用 pandas 0.13 导入多级索引 csv 数据

python - 在 matplotlib 注释中格式化数学文本

python - 如何在最大池之前填充特征图?

python - xlsxwriter:在其中添加带有其他工作表的公式

python - 无法导入 flup.server.fcgi

python - Whit python,在 blender 中插入一个效果条作为视频序列编辑器中的删除

python - 如何在pandas中按值滚动窗口执行排除组中的当前日期?