熊猫-汇总两个值之间的两行之间的值

时间:2020-01-14 17:22:16

标签: python pandas

我一直在想一种更有效的方式来汇总两个值之间的数据框中的值。

所以,我有这个数据框:

   Event   Value
   ==============
   Start   -
   Action  11
   Action  6
   Action  3
   End     -
   Start   -
   Action  8
   Action  6
   End     -

所以我要做的是将开始结束之间的所有值相加,并将该值存储在初始的开始

   Event    Value
   ==============
   Start   20
   Action  11
   Action  6
   Action  3
   End     -
   Start   14
   Action  8
   Action  6
   End     -

有没有一种方法可以不使用循环?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

尝试一下:

df['Value'] = df['Value'].replace('-', np.nan).astype(float)

df['Value'] = (df.groupby(df['Event'].eq('Start').cumsum())['Value']
                 .transform('sum')
                 .mask(df['Event'] != 'Start', df['Value'])
                 .fillna('-'))

输出:

    Event Value
1   Start    20
2  Action    11
3  Action     6
4  Action     3
5     End     -
6   Start    14
7  Action     8
8  Action     6
9     End     -

详细信息:

  • groupby的事件上使用cumsum,其中事件等于“开始”,以 创建群组
  • 然后使用transfrom计算总和和mask个事件,它们不等于 从原始的“值”开始
  • 然后使用fillna取回'-'字符