如何使用cumcount实现DataFrame分组内特定值的累计计数?
解决方法
你可以先筛选出value列取值为w的行,再按id字段分组后执行cumcount()即可,示例代码如下:
# 直接得到符合要求的计数序列,保留原始索引 result = df[df['value'] == 'w'].groupby('id').cumcount()
如果需要将计数列追加到原DataFrame中,再过滤得到目标格式,可以用以下写法:
# 给所有value=w的行填充累计计数,其余行默认留空 df['w_cumcount'] = df[df['value'] == 'w'].groupby('id').cumcount() # 过滤得到仅含value=w的行的计数结果 final_result = df[['w_cumcount']].dropna()
原理是先过滤掉所有value不等于w的行,剩余行的顺序和原表完全一致,此时分组累计计数就只会统计value为w的行,最终结果和你给出的预期输出完全匹配。
内容的提问来源于stack exchange,提问作者skulldoger
相关产品推荐
相关产品推荐

