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

如何在Pandas中按日期分组统计不同分组数量并生成指定DataFrame?

如何用Pandas统计每日不同Groups的数量并生成目标DataFrame?

看起来你需要统计每个日期下不同Groups的唯一数量,而不是简单的行数统计对吧?这里有两种简洁的方法可以实现你的需求:

方法一:直接使用groupby + nunique()

这是最直接的方式,一步到位:

import pandas as pd

# 你的原始DataFrame
df = pd.DataFrame({
    'Date': ['2017-1-1', '2017-1-1', '2017-1-2', '2017-1-2', '2017-1-3'],
    'Groups': ['one', 'one', 'one', 'two', 'two']
})

# 核心代码:按日期分组,统计每个日期下Groups的唯一值数量
result_df = df.groupby('Date')['Groups'].nunique().reset_index(name='Groups_counts')

print(result_df)

代码解释:

  • groupby('Date'):将数据按Date列分组,把同一天的记录归为一组
  • ['Groups'].nunique():对每个组的Groups列统计唯一值的个数,这正是你需要的“不同Groups的数量”
  • reset_index(name='Groups_counts'):将分组后的索引(Date)转为普通列,并把统计结果列命名为Groups_counts

方法二:先去重再统计

如果你更习惯分步操作,也可以先去掉同一日期下重复的Groups记录,再统计数量:

import pandas as pd

df = pd.DataFrame({
    'Date': ['2017-1-1', '2017-1-1', '2017-1-2', '2017-1-2', '2017-1-3'],
    'Groups': ['one', 'one', 'one', 'two', 'two']
})

# 第一步:去掉同一Date+Groups的重复记录
unique_records = df.drop_duplicates(subset=['Date', 'Groups'])

# 第二步:按Date分组统计行数(即不同Groups的数量)
result_df = unique_records.groupby('Date').size().reset_index(name='Groups_counts')

print(result_df)

代码解释:

  • drop_duplicates(subset=['Date', 'Groups']):只保留每个日期下每个Groups的第一条记录,去掉重复项
  • groupby('Date').size():按日期分组后统计每组的行数,此时的行数就是该日期下不同Groups的数量

两种方法最终都会输出你想要的结果:

Date  Groups_counts
0  2017-1-1              1
1  2017-1-2              2
2  2017-1-3              1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:01:58