我有一个DataFrame,其值分为两列,请参见表T1。希望按照表T2所示的方式重新排列值以创建数据布局。T2中的行是通过转置值的“滑动窗口”,将表T1中的列a向下移动而创建的。熊猫有什么聪明的方法可以有效地做到这一点吗?
T1 T2
a | b A | B | C | D
------ ---------------
41 | 5 41 | 42 | 43 | 7
42 | 6 42 | 43 | 44 | 8
43 | 7 --> 43 | 44 | 45 | 9
44 | 8 44 | 45 | .. | .
45 | 9 45 | .. | .. | .
.. | . .. | .. | .. | .
.. | . .. | .. | .. | .
Run Code Online (Sandbox Code Playgroud)
您可以使用as_strided:
from numpy.lib.stride_tricks import as_strided
window = 3
stride = df['a'].values.strides[0]
pd.DataFrame(as_strided(df['a'].values,
shape=(len(df) - window + 1, window),
strides = (stride,stride))
)
Run Code Online (Sandbox Code Playgroud)
输出:
0 1 2
0 41 42 43
1 42 43 44
2 43 44 45
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |