Python 如何在数据帧中每次满足某个条件时增加一个值
我有一个df,看起来像这样: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
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