You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame中ID的历史True标记累计计数实现求助

解决方案:按ID分组计算累计True计数

嘿,这个问题的核心其实是按ID分组后做累计求和,你之前可能没用到分组操作,所以结果没达到预期。我一步步给你讲清楚怎么实现:

首先,先还原你的DataFrame:

import pandas as pd

df = pd.DataFrame({
    'date': ['Apr1', 'Apr2', 'May1', 'May1', 'May2'],
    'ID': [1, 2, 1, 1, 1],
    'flag': [True, True, True, False, True]
})

关键步骤:分组后累计求和

你需要先按ID分组,然后对flag列做累计求和——因为pandas会自动把True识别为1,False识别为0,所以cumsum()会帮你统计到当前行为止,该ID的flag为True的总次数,不管当前行的flag是啥。

代码如下:

# 可选但推荐:把date转为日期类型,确保排序逻辑正确
df['date'] = pd.to_datetime(df['date'], format='%b%d')

# 核心操作:按ID分组,计算累计True数量
df['count'] = df.groupby('ID')['flag'].cumsum()

验证结果

运行后你会得到完全符合预期的结果:

dateIDflagcount
2023-04-011True1
2023-04-022True1
2023-05-011True2
2023-05-011False2
2023-05-021True3

为什么你之前的尝试没成功?

大概率是没用到groupby('ID'),直接全局做了cumsum(),这样会把所有ID的True数量混在一起统计,而不是每个ID单独计算。加上分组后,每个ID的累计计数就会独立计算啦。

内容的提问来源于stack exchange,提问作者yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:10:25