You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pythonic方式实现pandas基于列均值标准差的缺失值填充

缺失值填充的Python风格优化实现

你原有的逐单元格循环逻辑可以通过pandas向量化操作完全替代,数据量越大效率提升越明显,且输出结果和原有逻辑完全一致。

完整可运行代码如下:

import numpy as np
import pandas as pd

# 构造测试数据集
df = pd.DataFrame({
    'A': [1,2,3,4,5,np.nan,7,8,9],
    'B': [7,9,np.nan,13,15,17,19,21,23],
    'C': [-5,0,5,10,np.nan,20,25,30,35]
})

print("填充前:")
print(df)

# 预计算列维度的均值、标准差,和原逻辑保持一致
col_avg = df.mean(axis=0)
col_std = df.std(axis=0)

# 向量化计算每行的标准化后均值,替代循环中逐行计算nanmean的逻辑
row_norm_mean = ((df - col_avg) / col_std).mean(axis=1, skipna=True)

# 生成所有位置的对应填充值
fill_values = col_avg + col_std * row_norm_mean.values.reshape(-1, 1)

# 仅将原数据的空值替换为对应位置的填充值
df = df.where(df.notna(), fill_values)

print("\n填充后:")
print(df)

方案说明

  • 全程使用pandas、numpy内置向量化操作,完全移除了Python层的双重循环,性能远高于原有iterrows实现
  • 填充逻辑和你原有代码100%对齐,输出结果完全相同
  • 代码结构更清晰,符合Python数据处理领域的常规编码风格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:54:05