我需要用一个动态数字移动分组数据帧。我可以用apply来做,但是性能不是很好。在
有没有办法不用申请就这么做?在
以下是我想做的一个示例:
df = pd.DataFrame({
'GROUP': ['A', 'A', 'A', 'A', 'A', 'A', 'B','B','B','B','B','B'],
'VALUE': [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2],
'SHIFT': [ 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3]
})
df['SUM'] = df.groupby('GROUP').VALUE.cumsum()
# THIS DOESN'T WORK:
df['VALUE'] = df.groupby('GROUP').SUM.shift(df.SHIFT)
我用以下方式应用:
^{pr2}$
下面是一个纯numpy版本,如果数据帧按组排序(如您的示例所示):
它首先获取要更新的行的索引。可以减去移位以生成源行。在
如果组是连续的,避免
apply
的解决方案可以是:输出
^{pr2}$除了构建切片(
source
和target
),所有的计算都是在pandas/numpy级别完成的,速度应该很快。这样做的目的是手动模拟apply函数中的操作。在相关问题 更多 >
编程相关推荐