计算dataframe两列偏移量且排除单列异常值的实现方法
解决方法
你可以通过pandas的布尔索引过滤异常值后,基于剩余有效样本计算全局偏移量,再应用到全量数据完成校正,完整实现流程如下:
1. 核心逻辑说明
- 先过滤掉
CO2_LICOR大于350的异常峰值样本,避免异常值干扰偏移量计算精度 - 偏移量默认取有效样本中
CO2_LICOR与baseline_CO2差值的均值(如果需要更抗噪,可以替换为中位数) - 校正公式为:校正后CO₂ = 原始CO₂_LICOR - 偏移量
2. 完整代码实现
import pandas as pd # 假设你的原始DataFrame名为df # 步骤1:过滤异常值,得到有效样本子集 valid_df = df[df['CO2_LICOR'] <= 350].copy() # 步骤2:计算全局偏移量 # 用均值计算偏移 offset = (valid_df['CO2_LICOR'] - valid_df['baseline_CO2']).mean() # 若需要抗噪可替换为中位数:offset = (valid_df['CO2_LICOR'] - valid_df['baseline_CO2']).median() # 步骤3:校正全量原始CO2_LICOR数据 df['corrected_CO2'] = df['CO2_LICOR'] - offset
3. 结果说明
运行后你会在原始DataFrame中得到新列corrected_CO2,即为校正后的CO₂测量数据。如果你的偏移是随时间动态变化的,可以将上述逻辑适配到滑动时间窗口中计算逐段偏移量。
数据样例参考如下:
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

