Python 如何在数据帧中每次满足某个条件时增加一个值

Python 如何在数据帧中每次满足某个条件时增加一个值,python,pandas,Python,Pandas,我有一个df,看起来像这样: time val 0 1 1 1 2 2 3 3 4 1 5 2 我如何创建新的列来保存条件发生的累计总和?在本例中,我希望为val中的每个唯一值创建一列,该列保存给定发生行的累积和。见下文: time val sum_1 sum_2 sum_3 0 1 1 0 0 1 1 2 0 0 2 2

我有一个df,看起来像这样:

time  val
0      1
1      1
2      2
3      3
4      1
5      2

我如何创建新的列来保存条件发生的累计总和?在本例中,我希望为val中的每个唯一值创建一列,该列保存给定发生行的累积和。见下文:

time  val  sum_1   sum_2    sum_3
0      1    1        0       0 
1      1    2        0       0
2      2    2        1       0
3      3    2        1       1
4      1    3        1       1
5      2    3        2       1

您可以将每个结果添加到其自己的列中:

df=df.assign**{f'sum_{v}':df.val.eqv.cumsum for v in df.val.unique} 时间值总和1总和2总和3 0 0 1 1 0 0 1 1 1 2 0 0 2 2 2 2 1 0 3 3 3 2 1 1 4 4 1 3 1 1 5 5 2 3 2 1 给予


你刚刚让我过了一周。不知道存在.eq方法。我会很高兴摆脱嵌套方括号的子集设置…是的!也可用于轴、标高等参数。
df['sum_1'] = (df['val'] == 1).cumsum()
df['sum_2'] = (df['val'] == 2).cumsum()
df['sum_3'] = (df['val'] == 3).cumsum()
   time  val  sum_1  sum_2  sum_3
0     0    1      1      0      0
1     1    1      2      0      0
2     2    2      2      1      0
3     3    3      2      1      1
4     4    1      3      1      1
5     5    2      3      2      1