如何在熊猫中进行有条件的总和?

问题描述

我需要对熊猫的两列进行累加总和。

说我想总结工人在不同季度的销售额:

df = pd.DataFrame({'Worker': [A,A,B,C,D,D],'Quarter': ['Test 1','Test 2','Test 1','Test 2'],'Grade': [10,8,7,6,10,5,7]})
df

     Worker Quarter   Sales
  0       A      Q1      10
  1       A      Q2       8
  2       B      Q1       7
  3       B      Q2       6
  4       C      Q1       8
  5       C      Q2      10
  6       D      Q1       5
  7       D      Q2       7

给我这样的结果:

     Worker Quarter   Sales
  0       A      Q1      10
  1       A      Q2      18
  2       B      Q1       7
  3       B      Q2      13
  4       C      Q1       8
  5       C      Q2      18
  6       D      Q1       5
  7       D      Q2      12

最快的方法是什么?我正在尝试为循环嵌套,但是它们非常丑陋,并且在更长的数据库中,我担心丢失某些东西。

解决方法

尝试将groupbycumsum一起

df['Sales'] = df.groupby('Worker')['Sales'].cumsum()
,

您可以将cumsum与transform相结合:

df['Sales'] = df.groupby('Worker')['Sales'].transform(pd.Series.cumsum)

输出:

   Worker Quarter   Sales
  0       A      Q1      10
  1       A      Q2       8
  2       B      Q1       7
  3       B      Q2       6
  4       C      Q1       8
  5       C      Q2      10
  6       D      Q1       5
  7       D      Q2       7

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...