如何基于DataFrame中B列的指定范围计算A列的平均值
实现方法
基于Pandas库可以快速完成这个需求,核心思路是先按海拔区间过滤行,再对速度列求平均值,以下是具体实现:
单区间计算(匹配示例需求)
核心代码如下:
import pandas as pd # 假设你的原始DataFrame名为df # 筛选elevation介于-0.5到0.8之间的行,计算对应Speed的平均值 target_avg_speed = df[(df['elevation'] >= -0.5) & (df['elevation'] <= 0.8)]['Speed'].mean()
注意事项:多个布尔条件组合时,每个条件必须用括号包裹,且逻辑与运算符要使用&,不能用Python原生的and,否则会触发语法报错
多区间批量计算
如果你需要同时计算多个不同海拔区间对应的平均速度,可以用pd.cut结合分组聚合实现:
# 自定义海拔区间边界,可根据实际需求调整 elevation_bins = [-float('inf'), -0.5, 0.8, float('inf')] # 自定义区间名称 bin_labels = ['低于-0.5', '-0.5~0.8', '高于0.8'] # 为每行数据标记所属的海拔区间 df['elevation_group'] = pd.cut(df['elevation'], bins=elevation_bins, labels=bin_labels) # 按区间分组,计算每个区间的平均速度 grouped_avg_speed = df.groupby('elevation_group')['Speed'].mean()
运行后grouped_avg_speed会输出所有区间对应的平均速度结果。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

