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

如何在Pandas DataFrame中按时段计算每日平均Level值

高效计算每日昼夜平均Level值的Pandas方案

核心思路

用Pandas原生的矢量化分组操作替代循环,从底层优化计算效率,避免额外内存开销:

  1. 标准化时间格式:将时间列转为datetime类型,方便后续时间维度的处理
  2. 拆分日期与时段标签:提取纯日期信息,同时根据时间范围标记夜间/日间
  3. 聚合计算均值:按日期+时段分组,直接计算平均Level值,最后整理成目标格式

完整实现代码

import pandas as pd

# 假设原始数据存储在DataFrame df中
# 1. 转换时间列格式(若未转换)
df['Date_Time'] = pd.to_datetime(df['Date_Time'])

# 2. 生成日期列和时段标签列
df['Date'] = df['Date_Time'].dt.date.astype(str)  # 转为字符串匹配目标输出格式
# 判断所属时段:00:00-06:00标记为夜间,其余为日间
night_end = pd.to_datetime('06:00:00').time()
df['Time'] = df['Date_Time'].dt.time.apply(
    lambda t: '00:00:00 - 06:00:00' if t <= night_end else '06:00:01 - 23:59:59'
)

# 3. 分组计算均值并整理结果
result = df.groupby(['Date', 'Time'])['Level'].mean().round().reset_index()
result = result.rename(columns={'Level': 'AvgLevel'})

# 输出结果
print(result)

方案优势

  • 无循环开销:所有时间判断、聚合计算都是Pandas底层优化的矢量化逻辑,比Python循环效率提升数倍,内存占用大幅降低
  • 极简流程:无需拆分表格,直接通过分组完成聚合,避免中间数据的内存消耗
  • 格式精准匹配:日期转为字符串、均值取整,完全贴合你需要的输出结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:30:42