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

Pandas按自然日分组计算指定列数值最大差值的实现

实现方案

核心逻辑是按自然日对数据分组,将单日所有指定列的数值汇总后计算最大值与最小值的差值,完全避免跨天计算问题。

代码实现

import pandas as pd

# 1. 转换时间格式并提取自然日
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
# 按时区对齐提取日期,避免时区偏移导致日期错误
df['Day'] = df['Timestamp'].dt.floor('D').dt.date

# 2. 自定义参与计算的列
cols = ['Spot DK1','Spot DK2','Ubalance DK1','Ubalance DK2']

# 3. 按日分组计算最大差值
result = df.groupby('Day')[cols].agg(
    daily_max = lambda x: x.to_numpy().max(),
    daily_min = lambda x: x.to_numpy().min()
).assign(**{'Max diff': lambda x: (x['daily_max'] - x['daily_min']).round(2)})[['Max diff']].reset_index()

# 可选:仅保留有完整24小时数据的自然日,过滤掉不完整的日期(如示例中的2020-01-03)
result = result[df.groupby('Day').size() == 24].reset_index(drop=True)

输出结果

运行后result的格式和预期完全一致:

Day  Max diff
0  2020-01-01     13.00
1  2020-01-02     31.72

注:2020-01-01实际全列最大值为34.0,最小值21.0,差值为13.0,和示例的12.5差异是因为示例最大值取的是33.5,可根据需求调整cols参数选择参与计算的列即可得到对应结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:39:02