pandas 相当于 numpy.roll

Sca*_*let 7 python numpy pandas

我有一个 Pandas 数据框,我想添加一个包含现有列内容的新列,但相对于数据框的其余部分进行了移动。我还希望从底部下降的值滚动到顶部。

例如,如果这是我的数据框:

>>> myDF
   coord  coverage
0      1         1
1      2        10
2      3        50
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

>>> myDF_shifted
   coord  coverage  coverage_shifted
0      1         1                50
1      2        10                 1
2      3        50                10
Run Code Online (Sandbox Code Playgroud)

(这只是一个简化的例子——在现实生活中,我的数据框更大,我需要移动一个以上的单位)

这是我尝试过的和我得到的:

>>> myDF['coverage_shifted'] = myDF.coverage.shift(1)
>>> myDF
   coord  coverage  coverage_shifted
0      1         1               NaN
1      2        10                 1
2      3        50                10
Run Code Online (Sandbox Code Playgroud)

所以我可以创建移动的列,但我不知道如何将底部值滚动到顶部。从互联网搜索我认为 numpy 可以让你用“numpy.roll”来做到这一点。有大熊猫等价物吗?

CT *_*Zhu 9

Pandas 可能没有提供现成的方法来完全按照您所描述的方式进行操作,但是如果您可以稍微移动一下但开箱即用,numpy那么就可以了

在你的情况下是:

import numpy as np
myDF['coverage_shifted'] = np.roll(df.coverage, 2)
Run Code Online (Sandbox Code Playgroud)