【发布时间】:2015-08-27 18:50:19
【问题描述】:
我有一个 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”来做到这一点。有熊猫等价物吗?
【问题讨论】:
-
你可以做,即
myDF['coverage_shifted'] = np.roll(df.coverage, 2),移动2个位置。 -
效果很好!谢谢@CTZhu!
-
对于您想要使用
np.roll实现的效果更好,因为返回的 np 数组不会强制对索引值进行任何对齐,这就是您在这种情况下想要的效果 -
@JohnE,当然,很乐意这样做!