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

Pandas按日resample统计各错误类型出现次数的实现方法

解决方案

你之前的代码问题在于直接使用带时分秒的原始time字段做分组,每条不同时间戳的记录会被单独划分为一组,无法合并同一天的同类型错误记录,按以下步骤实现即可。

基础实现(仅统计有出现记录的日期-错误类型组合)

  • 首先确保时间列被正确解析为pandas datetime格式
  • 将时间截断到日维度,再和错误类型联合分组计数即可
import pandas as pd

# 解析时间列
df['time'] = pd.to_datetime(df['time'])

# 按日+错误类型统计次数
result = (
    df
    # 新增日期列,将时间截断到当日0点
    .assign(date = df['time'].dt.floor('d'))
    # 联合分组
    .groupby(['date', 'error'], as_index=False)
    # 计数
    .size()
    # 把列名改回和期望输出一致
    .rename(columns={'date': 'time'})
)

运行后得到的结果和你给出的期望输出完全一致。

全量覆盖实现(包含所有日期、所有错误类型,无出现记录则计数为0)

如果需要覆盖完整日期段内的所有错误类型,即使某天某类错误一次都没出现也展示为0,使用重索引补全即可:

df['time'] = pd.to_datetime(df['time'])
# 提取日期维度
df['date'] = df['time'].dt.floor('d')

# 生成数据覆盖范围内的完整日期序列
full_date_range = pd.date_range(
    start=df['date'].min(),
    end=df['date'].max(),
    freq='D'
)
# 拿到所有出现过的错误类型
all_error_types = df['error'].unique()
# 生成 日期+错误类型 的全量组合索引
full_multi_index = pd.MultiIndex.from_product(
    [full_date_range, all_error_types],
    names=['time', 'error']
)

# 统计后重索引补全缺失值
result = (
    df
    .groupby(['date', 'error'])
    .size()
    .reindex(full_multi_index, fill_value=0)
    .reset_index(name='size')
)

示例输出

针对你给出的测试数据,运行上述代码输出如下:

time  error  size
0 2021-10-03   2222     2
1 2021-10-03   3333     2
2 2021-10-03   4444     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:06:20