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

如何为含非规整时间戳的DataFrame计算每日每两组测量值的温度均值?

解决方案

要实现按日期分组,且每组内每两个连续测量值(按时间排序后)计算均值的需求,可通过以下通用步骤完成,适配时间戳不规整的情况:

步骤说明

  1. 合并并排序时间戳:先将日期和时间列合并为完整的datetime字段,确保每组内的测量值按时间顺序排列(因为数据不规整,必须先排序保证分组逻辑正确)。
  2. 生成组内分组标签:对每个日期分组内的行,按顺序分配组ID,每两个行归为同一组。
  3. 分组计算均值:按日期和组ID分组,计算每组的温度均值。

代码实现

import pandas as pd

# 构造示例数据(模拟用户的df)
data = {
    '日期': ['2022/01/01']*4 + ['2022/02/01']*4,
    '时间': ['00:00:00', '06:00:00', '12:00:00', '18:00:00',
            '00:00:00', '06:00:00', '12:00:00', '18:00:00'],
    '温度': [23,14,21,13,25,23,15,17]
}
df = pd.DataFrame(data)

# 1. 合并日期和时间为datetime列,并按此列排序
df['datetime'] = pd.to_datetime(df['日期'] + ' ' + df['时间'])
df = df.sort_values('datetime').reset_index(drop=True)

# 2. 按日期分组,生成组内的分组标签(每两个一组)
df['组ID'] = df.groupby('日期').cumcount() // 2

# 3. 按日期和组ID分组,计算温度均值
result = df.groupby(['日期', '组ID'])['温度'].mean().reset_index()

# 可选:给组ID添加更直观的名称(比如"第1组"、"第2组")
result['组名称'] = '第' + (result['组ID'] + 1).astype(str) + '组'

print(result)

输出示例

日期  组ID    温度  组名称
0  2022/01/01    0  18.5  第1组
1  2022/01/01    1  17.0  第2组
2  2022/02/01    0  24.0  第1组
3  2022/02/01    1  16.0  第2组

适配特殊情况

如果某天的测量值数量为奇数(比如3个),上述代码会将最后一个单独归为一组并计算均值。若想忽略这类单元素组,可在最后一步添加过滤:

# 过滤掉组内元素数量小于2的分组
result = df.groupby(['日期', '组ID']).filter(lambda x: len(x)>=2).groupby(['日期', '组ID'])['温度'].mean().reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:30:50