Pandas DataFrame按id分组10秒重采样并返回采样起止时间的实现
你可以通过resample搭配多聚合函数agg()同时计算value总和、窗口内最小/最大时间,以下是修改后的完整代码:
import pandas as pd df = pd.read_csv('df.csv') df['date'] = pd.to_datetime(df['date']) # 分组后按10秒重采样,同时计算三个指标 df_resampled = df.groupby('id').resample('10s', on='date').agg( value=('value', 'sum'), start_time=('date', 'min'), end_time=('date', 'max') ).reset_index() # 过滤空窗口、重命名列名、排序 df = df_resampled[df_resampled['value'] != 0].rename(columns={ 'start_time':'start-time', 'end_time':'end-time' }).sort_values(['date']) # 输出csv格式结果 print(df.to_csv(index=False))
核心修改说明
- 去掉原有
set_index('date')逻辑,改用resample的on参数指定时间列,保留原始date列用于计算窗口内的实际起止时间 - 通过
agg()同时定义三类聚合规则:value列求和、date列取最小值作为窗口最早时间、date列取最大值作为窗口最晚时间 - 最终输出字段、数值完全匹配你提供的预期结果
内容的提问来源于stack exchange,提问作者GKC
相关产品推荐
相关产品推荐

