关于打印含缺失值前10行异常及dropna()处理缺失值的问题求助
问题解决方案
1. 正确打印包含缺失值的前10行
你当前代码里的df.iloc[:, 0:10]是提取前10列的所有行,并非筛选含缺失值的前10行。要实现需求,需先筛选出存在缺失值的行,再取前10条:
# 筛选含缺失值的行,取前10条 rows_with_na = df[df.isna().any(axis=1)] top10_na_rows = rows_with_na.head(10) print("前10行含缺失值的数据") print(top10_na_rows)
2. 修复dropna结果不符的问题
你的注释写的是删除含缺失值的列,但dropna()默认行为是删除含缺失值的行。如果要删除列,必须指定axis=1参数:
# 删除包含缺失值的列 mydf1 = mydf.dropna(axis=1)
另外,先验证na_values=['-']是否生效,确认'-'被正确转为缺失值:
# 查看各列缺失值数量,验证识别是否正确 print("各列缺失值统计") print(df.isna().sum())
完整修正后的代码
import pandas as pd df = pd.read_excel("1.xlsx", index_col='Variables', na_values=['-']) # 验证缺失值识别效果 print("各列缺失值统计") print(df.isna().sum()) # 输出含缺失值的前10行 print("\n前10行含缺失值的数据") rows_with_na = df[df.isna().any(axis=1)] print(rows_with_na.head(10)) # 取前10列并删除含缺失值的列 print("\n删除含缺失值列后的数据集") mydf = df.iloc[:, 0:10] mydf1 = mydf.dropna(axis=1) print(mydf1)
内容的提问来源于stack exchange,提问作者unleasehed
相关产品推荐
相关产品推荐

