我有以下数据框:
>>>variable value
0 var1 0.25
1 var2 0.11
2 tt_var1 0.01
3 tt_var2 0.0004
4 tt_var3 0.07
5 bb_var5 0.102
6 var_3 0.45
7 bb_var74 0.23
我想使用cumsum()来对列“ 1”中的值求和,但仅适用于特定变量:我想对数据帧中所有以tt开头的变量和所有以bb开头的变量求和,所以最后我将得到以下表格:
>>>variable value
0 var1 0.25
1 var2 0.11
2 tt *sum of all tt **
3 bb *sum of all bb**
4 var_3 0.45
我知道如何使用cumsum,但是我还没有找到任何方法将其指定为仅在一行中有某些共同点(例如字母bb或tt)的特定行上使用。
是否可以通过这种方式使用cumsum()?
答案 0 :(得分:2)
使用groupby,
grouper = df['variable'].replace({'tt_.*': 'tt', 'bb_.*': 'bb'}, regex=True)
df.groupby(grouper).sum().reset_index()
输出
variable value
0 bb 0.3320
1 tt 0.0804
2 var1 0.2500
3 var2 0.1100
4 var_3 0.4500