You need to enable JavaScript to run this app. 如何用pandas apply函数将错移至B、C列的数值移回A列
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas apply函数将错移至B、C列的数值移回A列

数据错移值归位实现方案

错移值识别规则

结合示例数据集的取值特征,可精准匹配错移判定标准:

  • A列正常取值为100-700区间的百位数级数值
  • B、C列正常取值为个位数级(8-15区间)
  • 所有出现在B、C列内、值超过100的单元格,均为从A列错移而来的异常值,这类值的核心特征是显著大于所在列的常规取值范围

可直接运行的实现代码

import pandas as pd
import numpy as np

# 复现原始示例数据集
data = {'A': [100,200,np.nan,400,np.nan ,600,np.nan , np.nan], 
        'B': [8, 9,np.nan , 11, 500, 13, 700, 15 ], 
        'C': [np.nan,np.nan,300, np.nan, 12,np.nan , 14, np.nan]}
df = pd.DataFrame(data, index=pd.date_range("2021-02-01", periods=8, freq="24H"))

# 定义错移判定阈值:B/C列正常最大取值远低于100,超过该值即为错移的A列数值
abnormal_threshold = 100
# 定位所有存在错移值的行和对应数值
shifted_rows = df.loc[df[['B', 'C']].gt(abnormal_threshold).any(axis=1), ['B', 'C']]

# 逐行执行数值归位
for row_idx, row_data in shifted_rows.iterrows():
    # 提取当前行的错移数值和原所在列
    abnormal_cells = row_data[row_data > abnormal_threshold]
    shifted_val = abnormal_cells.iloc[0]
    original_col = abnormal_cells.index[0]
    # 将错移值赋值给对应行的A列
    df.loc[row_idx, 'A'] = shifted_val
    # 清空原位置的错误偏移值
    df.loc[row_idx, original_col] = np.nan

修正效果验证

执行完上述代码后,输出修正后的数据集:

A     B     C
2021-02-01  100.0   8.0   NaN
2021-02-02  200.0   9.0   NaN
2021-02-03  300.0   NaN   NaN
2021-02-04  400.0  11.0   NaN
2021-02-05  500.0   NaN  12.0
2021-02-06  600.0  13.0   NaN
2021-02-07  700.0   NaN  14.0
2021-02-08    NaN  15.0   NaN

全量数据集适配调整说明

  • 针对实际50列的数据集,可将代码中['B', 'C']替换为除目标列A外的所有列名列表,扩大错移值的检测范围
  • 错移判定阈值可根据实际业务的列取值范围灵活调整,例如某列正常取值最大为60,即可将阈值设为70,适配不同量级的错移场景
  • 可增加前置判断逻辑:仅当目标行的A列当前为空值时才执行归位赋值,避免覆盖原有的正确A列数值

内容的提问来源于stack exchange,提问作者sambehera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 10:36:03