如何基于对应数据限定符计算Pandas行内数值的条件平均值
解决方案
你可以通过Pandas的向量化操作实现需求,比逐行apply效率更高,且天然满足所有规则要求:
import pandas as pd # 若数据已加载到df可跳过读取步骤 df = pd.read_csv("你的本地数据文件路径.csv") # 1. 筛选所有风速列 wind_cols = [col for col in df.columns if col.endswith('_wind')] # 2. 自动匹配对应质量校验列 qual_cols = [f"{col}_Q" for col in wind_cols] # 3. 将校验结果为False的风速值替换为NaN valid_wind = df[wind_cols].where(df[qual_cols].to_numpy()) # 4. 按行求平均,自动忽略NaN,全无效行自动返回NaN df['Avg_WS'] = valid_wind.mean(axis=1)
逻辑说明
where方法会保留条件为True位置的原始风速值,条件为False的位置自动替换为NaNmean(axis=1)计算行平均时默认跳过所有NaN值,正好符合仅统计有效数据的要求- 若某行所有风速值都被替换为NaN,计算结果自动为NaN,无需额外处理全无效的边界情况
内容的提问来源于stack exchange,提问作者DiegoRC
相关产品推荐
相关产品推荐

