假设我有一个 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/