You need to enable JavaScript to run this app. 有没有更pythonic的方式实现条件计数,生成Pandas DataFrame的count列?
优惠活动
大模型
产品
解决方案
定价
更多

有没有更pythonic的方式实现条件计数,生成Pandas DataFrame的count列?

你要实现的是对vals列相同值按出现顺序生成从1开始的递增序号,直接用pandas内置的分组累计计数方法就能实现,全程不用手动写for循环,代码非常简洁:

import pandas as pd

val = [1, 1, 1, 1, 2, 3, 4, 4, 5, 5, 5, 6, 7, 7, 7, 7]
df = pd.DataFrame(val, index = pd.date_range("2021-05-30", freq="D", periods=len(val)), columns=['vals'])

# 核心代码,仅一行生成count列
df['count'] = df.groupby('vals').cumcount() + 1

运行后生成的count列和你用循环得到的结果完全一致。
这里的groupby('vals')会把所有vals值相同的行归为同一组,cumcount()方法会返回每组内的行顺序编号(默认从0开始计数),加1后刚好得到你需要的从1开始的序列。相比手写循环的方案,这个方法是pandas优化过的向量化操作,数据量越大性能优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:57:00