Pandas 带字符条件的 sum()
Pandas sum() with character condition
我有以下数据框:
>>>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 开头的所有变量求和我的数据框,所以最后我将得到以下 table :
>>>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()?
使用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
我有以下数据框:
>>>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 开头的所有变量求和我的数据框,所以最后我将得到以下 table :
>>>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()?
使用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