Python将小时数据重采样为日度数据并仅对Consumption rate列求和
实现方法
首先确保你的数据集的时间索引为datetime类型,若未转换先执行:data.index = pd.to_datetime(data.index)
方法1:手动指定各列聚合规则
适合列数较少的场景,直接在agg方法中声明每列的聚合逻辑:
daily_data = data.resample('D').agg( # 其余需要保留的列统一使用first取当日第一条数据(若当日同列值一致可直接用) 列名1 = ('列名1', 'first'), 列名2 = ('列名2', 'first'), # 仅对Consumption rate字段按天求和 Consumption_rate = ('Consumption rate', 'sum') ).reset_index(drop=True)
方法2:批量生成聚合规则
适合列数较多的场景,默认所有列取当日第一条数据,仅修改目标字段的聚合规则:
# 初始化聚合规则:所有列默认取当日第一条 agg_rules = {col: 'first' for col in data.columns} # 单独指定Consumption rate列按天求和 agg_rules['Consumption rate'] = 'sum' # 执行聚合 daily_data = data.resample('D').agg(agg_rules).reset_index(drop=True)
特殊场景适配
如果你的时间字段是单独的列而非索引,可以改用groupby实现相同效果,假设时间列名为time_col:
data['time_col'] = pd.to_datetime(data['time_col']) agg_rules = {col: 'first' for col in data.columns} agg_rules['Consumption rate'] = 'sum' daily_data = data.groupby(data['time_col'].dt.date).agg(agg_rules).reset_index(drop=True)
如果同一天内非求和列存在多个不同值,可按需修改聚合规则,比如合并去重值可将'first'替换为lambda x: ', '.join(map(str, x.unique()))。
内容的提问来源于stack exchange,提问作者Rahul Patel
相关产品推荐
相关产品推荐

