如何使用pandas计算指定时间区间内的平均值
解决步骤
首先你需要先把数据里分开的Date、Time列合并为完整的datetime类型列,才能按时间范围筛选,后续再统计对应范围的平均气温即可。
1. 预处理时间列
import pandas as pd import numpy as np # 合并Date、Time为完整时间戳列 df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])
2. 单天指定时段平均气温统计
以你举例的2021-03-11当日14:23:00到16:53:00为例:
# 定义统计的起止时间 start = pd.to_datetime('2021-03-11 14:23:00') end = pd.to_datetime('2021-03-11 16:53:00') # 过滤出时间范围内的数据 range_df = df[(df['datetime'] >= start) & (df['datetime'] <= end)] # 计算平均气温 avg_temp = range_df['Air_temp'].mean()
3. 按天统计所有日期固定时段的平均气温
如果需要统计每天的14:23:00到16:53:00的平均气温,可以按以下方式实现:
# 提取时间部分用于时段匹配 df['time_part'] = df['datetime'].dt.time start_time = pd.to_datetime('14:23:00').time() end_time = pd.to_datetime('16:53:00').time() # 筛选所有符合时段的数据 daily_range_df = df[(df['time_part'] >= start_time) & (df['time_part'] <= end_time)] # 按日期聚合求均值,两种写法均可 # 写法1:groupby实现 daily_avg = daily_range_df.groupby('Date')['Air_temp'].mean().reset_index() # 写法2:pivot_table实现 daily_avg_pivot = pd.pivot_table( daily_range_df, values='Air_temp', index='Date', aggfunc=np.mean ).reset_index()
内容的提问来源于stack exchange,提问作者Monica Pena
相关产品推荐
相关产品推荐

