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”来做到这一点。有大熊猫等价物吗?
Pandas 可能没有提供现成的方法来完全按照您所描述的方式进行操作,但是如果您可以稍微移动一下但开箱即用,numpy那么就可以了
在你的情况下是:
import numpy as np
myDF['coverage_shifted'] = np.roll(df.coverage, 2)
Run Code Online (Sandbox Code Playgroud)