如何从DataFrame中提取符合列条件的数据并计算分组均值?
直接提取符合条件行的方法
不用drop删行,直接用布尔索引就能提取符合条件的行,这是pandas里最常用的方式:
# 提取风向为360°的所有行 north_wind_rows = df[df['风向'] == 360] # 单独提取对应的风速列 north_wind_speeds = df[df['风向'] == 360]['风速']
也可以用query()方法,写法更简洁:
north_wind_rows = df.query('风向 == 360') north_wind_speeds = df.query('风向 == 360')['风速']
按各风向提取数据并计算平均风速
如果要批量处理所有风向,直接用groupby分组统计最省心,它会自动按风向分组,然后计算每组的平均风速:
# 按风向分组,计算每组风速的平均值 wind_direction_avg = df.groupby('风向')['风速'].mean()
这个结果是一个Series,索引是各个风向值,对应的值就是该方向的平均风速,不用自己手动算总和除以次数。
如果要手动验证单个风向的平均(比如北风),也可以这么算:
north_speeds = df[df['风向'] == 360]['风速'] north_avg_speed = north_speeds.sum() / len(north_speeds) # 或者直接用pandas的mean方法,结果完全一致 north_avg_speed = north_speeds.mean()
内容的提问来源于stack exchange,提问作者enrique perez
相关产品推荐
相关产品推荐

