如何用Pandas按日期、区域、事件等级筛选计算平均速度?
解决方案
核心步骤说明
问题大概率出在日期列未正确转换为datetime类型,或是条件筛选的逻辑组合有误,按以下步骤操作即可得到正确结果:
- 先将Date列转为datetime格式
原始数据里的Date是字符串格式,直接按年份筛选会失效,必须先做类型转换:
import pandas as pd # 读取你的数据(根据实际数据源调整,比如read_excel) df = pd.read_csv('your_data_file.csv') # 转换Date列为datetime类型 df['Date'] = pd.to_datetime(df['Date'])
- 多重条件筛选+计算均值
同时匹配三个条件:年份为2017、Area等于Reet、Incidents等于M,然后提取Speed列计算平均值:
# 组合筛选条件 filter_mask = (df['Date'].dt.year == 2017) & (df['Area'] == 'Reet') & (df['Incidents'] == 'M') # 计算目标平均值 target_avg = df.loc[filter_mask, 'Speed'].mean() # 按预期格式输出结果(保留两位小数) print(round(target_avg, 2))
之前方法失效的可能原因
- 未转换Date列类型:直接用字符串匹配年份容易因格式差异出错,
dt.year也无法在字符串列上生效; date_range或set_index的用法有误:这类方法更适合时间序列的切片,不如直接用布尔掩码的方式直观,容易出现条件对齐错误。
内容的提问来源于stack exchange,提问作者dangoqut132
相关产品推荐
相关产品推荐

