熊猫:与先前价值的差异

Dav*_*vid 5 python pandas

给定一个看起来像这样的熊猫数据框

GROUP   VALUE    MASK
  1        5     false
  2       10     false
  2       20     false
  1        7     true
  3        17    false
  3        18    false
  1        100   false
  1        200   true
Run Code Online (Sandbox Code Playgroud)

对于MASK为真的每一行,我想得到与该组中先前值的差,即结果应为

VALUE DIFF
  7      2
  200  100
Run Code Online (Sandbox Code Playgroud)

如何在Pandas中计算?

如何为具有约200万行和100万组的大型数据帧快速计算出该值?

piR*_*red 1

使用groupbydiff'MASK'

pd.concat([df.VALUE, df.groupby('GROUP').VALUE.diff()],
          axis=1, keys=['VALUE', 'DIFF'])[df.MASK]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述