python - 如何制作windows的数据框?

标签 python pandas

假设我有一个 pandas 系列:

0 x[0]
1 x[1]
...
n x[n]
...

我想创建一个 pandas.Dataframe其行是数据框中大小为 k 的窗口。因此,对于 k=2,我们有

  1     0
0 x[0]  x[1]
1 x[1]  x[2]
2 x[2]  x[3]
...
n-1 x[n-1] x[n]

有一些明显笨拙的方法可以做到这一点,但似乎应该有一种单行方法。

最佳答案

并不理想,但可能比原始 for 循环更好:

代码:

def shift_to_columns(vector, k):
    return pd.DataFrame({i: vector.slice_shift(-i)[:len(vector)-k+1]
                         for i in range(k)})

测试代码:

import pandas as pd
data = pd.Series(range(10))
print(data)
print(shift_to_columns(data, 3))

结果:

0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9

dtype: int64
   0  1  2
0  0  1  2
1  1  2  3
2  2  3  4
3  3  4  5
4  4  5  6
5  5  6  7
6  6  7  8
7  7  8  9

关于python - 如何制作windows的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47321703/

相关文章:

python - 制作一副牌,在 1 次迭代后不可调用

python - 串联运算符 + 或 ,

python - 计算列中的唯一值

python - Pandas iloc vs 直接切片?

python - Pandas 值(value)错误: invalid literal for int() with base 10: ''

python - 在哪里可以找到 PythonMagick 文档?

python - 为什么我的 python if 语句不起作用?

python - 在多个端口上运行 Reactor.run

python - 使用 pandas 操作创建派生列

python - 来自 read_json() 的 Pandas 数据帧的时间戳索引