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

如何在Pandas中基于其他行单元格值添加计数列?

高效实现Pandas分组日期累计计数

可以实现,而且针对百万级数据,以下是高效的解决方案:

步骤说明

核心思路是先聚合统计每个Aid下各日期的出现次数,再计算累计和,最后映射回原DataFrame,避免逐行遍历的低效操作。

代码实现

import pandas as pd

# 1. 确保Date列为datetime类型(如果原始数据不是的话)
df['Date'] = pd.to_datetime(df['Date'])

# 2. 统计每个(Aid, Date)组合的出现次数
date_counts = df.groupby(['Aid', 'Date']).size().reset_index(name='daily_count')

# 3. 按Aid分组,计算累计求和(即<=当前日期的总行数)
date_counts['Counter'] = date_counts.groupby('Aid')['daily_count'].cumsum()

# 4. 将累计计数合并回原DataFrame
df = df.merge(date_counts[['Aid', 'Date', 'Counter']], on=['Aid', 'Date'], how='left')

结果验证

运行后得到的DataFrame与预期完全一致:

IdDateAidCounter
02022-01-01one2
12022-01-01two1
22022-01-05one4
32022-01-06three1
42022-01-02one3
52022-01-01one2

效率说明

该方案的时间复杂度为O(n log n)(主要来自groupby的排序操作),远优于逐行比较的O(n²),完全适配百万级数据的处理需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:15:43