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

Python:如何按date_col分组统计DataFrame中带狗的唯一ID数量?

Pandas实现按日期统计有狗的唯一ID数量

方法一:分步处理(逻辑清晰)

先构造示例数据:

import pandas as pd

data = {
    'date_col': ['2020-01-01', '2020-01-01', '2020-05-01', '2020-05-01', '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01'],
    'ID': [1, 2, 1, 2, 1, 2, 3, 1],
    'dog': [1, 0, 1, 0, 1, 0, 1, 1]
}
df = pd.DataFrame(data)

执行统计操作:

# 筛选出有狗的记录,按日期分组统计唯一ID数量
dog_unique_counts = df[df['dog'] == 1].groupby('date_col')['ID'].nunique().reset_index(name='dog_count_uniqueID')

# 获取所有唯一日期,确保不遗漏任何原始日期
all_dates = df['date_col'].drop_duplicates().to_frame(name='date_col')

# 左连接补全所有日期,缺失值填充为0
result = pd.merge(all_dates, dog_unique_counts, on='date_col', how='left').fillna(0)

# 将统计列转为整数类型(可选)
result['dog_count_uniqueID'] = result['dog_count_uniqueID'].astype(int)

方法二:聚合函数直接处理(更简洁)

基于上述示例DataFrame,一行聚合操作完成需求:

result = df.groupby('date_col').agg(
    dog_count_uniqueID=('ID', lambda x: x[df.loc[x.index, 'dog'] == 1].nunique())
).reset_index()

最终结果

两种方法都会生成你期望的输出:

date_coldog_count_uniqueID
2020-01-011
2020-05-011
2020-06-010
2020-07-011
2020-08-011

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:55:20