【问题标题】:pandas equivalent to numpy.roll相当于 numpy.roll 的熊猫
【发布时间】: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,当然,很乐意这样做!

标签: python numpy pandas


【解决方案1】:

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

在你的情况下是:

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

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多