我有一个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"来做这件事。有没有熊猫?
答案 0 :(得分:1)
Pandas可能没有提供现成的方法来完全按照您的描述进行操作,但是,如果您可以稍微移动一下,即开即用,则numpy
会有exactly that >
您的情况是:
import numpy as np
myDF['coverage_shifted'] = np.roll(df.coverage, 2)