如何使用Python的plydata包填补数值与分类列的缺失值?
使用plydata处理DataFrame缺失值的修正方案
需求说明
需将DataFrame中分类列beta的缺失值替换为"missing",数值列z的缺失值替换为该列的均值,使用Python的plydata包实现。
原代码问题分析
- 判断缺失值不能用
x==np.nan,NaN不等于任何值(包括自身),需使用plydata的is.na()函数 if_else参数格式错误,字符串引号嵌套混乱,未正确引用列名- 未针对目标列
beta和z进行处理
修正后的完整代码
import pandas as pd import numpy as np from plydata import mutate, if_else, is.na # 创建原始DataFrame df1 = pd.DataFrame({ 'alpha': list('a abbb'), 'beta': list('bab uq'), 'theta': list('cdec e'), 'x': [1, 2, np.nan, 4, 5, 6], 'y': [6, 5, 4, 3, 2, np.nan], 'z': [7, np.nan, 11, 8, 10, 12] }) # 处理缺失值 df_processed = df1 >> mutate( beta=if_else(is.na(beta), "missing", beta), z=if_else(is.na(z), z.mean(na.rm=True), z) ) # 查看结果 print(df_processed)
代码说明
is.na(beta):检测beta列的缺失值,配合if_else将缺失值替换为"missing"z.mean(na.rm=True):计算z列的均值时通过na.rm=True忽略缺失值,再用if_else替换z列的缺失值为该均值
内容的提问来源于stack exchange,提问作者Ransingh Satyajit Ray
相关产品推荐
相关产品推荐

