Skip to main content
 首页 » 编程设计

python之根据 True/False "sets"在 pandas dataframe 中添加后续值

2025年05月04日21虾米哥

我有一个这样的数据框:

import pandas as pd 
 
df = pd.DataFrame({ 'num' : [0.43, 5.2, 1.3, 0.33, .74, .5, .2, .12], 
                   'complete' : [False, True, False, False, True, False, True, True] 
                    }) 
 
df 
 
 
   complete num 
0   False   0.43 
1   True    5.20 
2   False   1.30 
3   False   0.33 
4   True    0.74 
5   False   0.50 
6   True    0.20 
7   True    0.12 

我想创建一个总和列表,每个 True 条目都有一个值,后跟 df.complete 中的至少一个 False >。它应该是 True num 加上之后每个 False num 的总和,直到下一个 True 再次出现。

在此示例中,它将是两个总和的列表:

[(5.2 + 1.3 + 0.33), (0.74 + 0.5)]  

所以最后的结果是

[6.83, 1.24] 

生成最终列表的 pythonic 方法是什么?

请您参考如下方法:

我会这样做:

# create a group 
df['group'] = df['complete'].cumsum() 
 
# find which groups to add 
vals = df.group.value_counts() 
groups_to_consider = vals[vals > 1].index.tolist() 
 
## add values 
df[df['group'].isin(groups_to_consider)].groupby('group')['num'].sum().tolist() 
 
# [6.83, 1.24]