pandas相当于numpy.roll

时间:2015-08-27 18:50:20

标签: python numpy pandas

我有一个pandas数据框,我想添加一个新列,它包含现有列的内容,但相对于数据帧的其余部分进行了移位。我也喜欢从底部掉下来以达到顶峰的价值。

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

>>> myDF
   coord  coverage
0      1         1
1      2        10
2      3        50

我想得到这个:

>>> myDF_shifted
   coord  coverage  coverage_shifted
0      1         1                50
1      2        10                 1
2      3        50                10

(这只是一个简单的例子 - 在现实生活中,我的数据帧更大,我需要移动多个单位)

这就是我尝试过的以及我得到的回报:

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

所以我可以创建移位列,但我不知道如何将底部值推到顶部。从互联网搜索我认为numpy允许你用" numpy.roll"来做这件事。有没有熊猫?

1 个答案:

答案 0 :(得分:1)

Pandas可能没有提供现成的方法来完全按照您的描述进行操作,但是,如果您可以稍微移动一下,即开即用,则numpy会有exactly that

您的情况是:

import numpy as np
myDF['coverage_shifted'] = np.roll(df.coverage, 2)