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

使用Pandas to_datetime按固定时间间隔统计,补全无数据时段记录

实现方案

现有代码存在笔误:datafiltr['time'] 应为 datafilter['time'],你可以通过以下两种常用方法实现无数据时段自动补0:

方法1:重索引法(适配你现有groupby逻辑)

import pandas as pd

# 原有读取过滤逻辑修正后
data = pd.read_csv("2021-08-13.csv", parse_dates=['time'], infer_datetime_format=True)
datafilter = data[data.lane == "Lane 1"].copy() # 新增copy避免链式赋值警告
datafilter['time'] = pd.to_datetime(datafilter['time'], errors='coerce')

# 原有按小时聚合逻辑
df = datafilter['time'].groupby(datafilter.time.dt.to_period("H")).agg('count')

# 生成完整小时级时间索引
# 自动取现有数据的时间边界:
full_idx = pd.period_range(start=df.index.min(), end=df.index.max(), freq='H')
# 如需固定自定义时间范围可替换为:
# full_idx = pd.period_range(start='2021-08-18 00:00', end='2021-08-18 23:00', freq='H')

# 重索引补0
df = df.reindex(full_idx, fill_value=0)

# 如需将period格式索引转为普通datetime格式可加
df.index = df.index.to_timestamp()

方法2:resample法(更简洁)

pandas内置的重采样方法可以直接实现按固定频率统计,自动补全缺失时段:

import pandas as pd

data = pd.read_csv("2021-08-13.csv", parse_dates=['time'], infer_datetime_format=True)
datafilter = data[data.lane == "Lane 1"].copy()
datafilter['time'] = pd.to_datetime(datafilter['time'], errors='coerce')

# 将时间列设为索引后按小时重采样统计,自动补0
df = datafilter.set_index('time').resample('H').size()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:57:03