如何用Pandas为缺失时间戳分组的行数统计填充0值?
解决方法
你可以通过两种方式填充缺失的时间区间为0:
方法一:对已分组结果重新索引
先基于现有分组数据的时间范围生成完整的10分钟间隔时间序列,再重新对齐原数据并填充缺失值:
import pandas as pd # 你的原分组代码 minutes = '10T' grouped_df = df.loc[df['id_area'] == 3].groupby(pd.to_datetime(df["timestamp"]).dt.floor(minutes))["x"].count() # 生成完整的时间索引 start = grouped_df.index.min() end = grouped_df.index.max() full_time_index = pd.date_range(start=start, end=end, freq=minutes) # 重新索引并填充0 filled_grouped = grouped_df.reindex(full_time_index, fill_value=0)
执行后filled_grouped会包含所有10分钟间隔的时间点,空缺区间的计数为0。
方法二:直接用resample替代groupby(更简洁)
使用resample可以直接生成完整的时间区间并统计,无需后续补全:
minutes = '10T' # 筛选数据后设置时间索引,resample按10分钟统计数量,自动补全缺失区间为0 filled_grouped = ( df.loc[df['id_area'] == 3] .assign(timestamp=pd.to_datetime(df['timestamp'])) .set_index('timestamp') ['x'] .resample(minutes) .count() )
resample会自动覆盖从数据中最早到最晚时间的所有10分钟间隔,没有数据的区间计数自然为0,无需额外填充。
内容的提问来源于stack exchange,提问作者JayJona
相关产品推荐
相关产品推荐

