如何筛选Pandas DataFrame中含最少NaN值、最多有效值的列
实现方法
你可以通过统计各列NaN数量后取最小值对应列的方式实现需求,完整可运行代码如下:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({"A1":[np.NaN,1,0,0,np.NaN,0,1,np.NaN,0,0,0,1], "A2":[0,1,np.NaN,0,1,np.NaN,1,0,np.NaN,0,0,1], "A3":[0,1,np.NaN,0,1,0,1,0,0,0,0,2]}) # 统计每列NaN的总数量 col_nan_count = df.isna().sum() # 取NaN数量最少的第一个列名 target_col = col_nan_count.idxmin() # 生成仅包含该列的数据集 subset_df = df[[target_col]] print(subset_df)
代码说明
df.isna().sum()会逐列统计NaN的个数,返回列名对应NaN数量的Series结构idxmin()方法会返回最小值对应的第一个索引,刚好符合多列NaN数量相同时取最先出现列的要求,你给出的示例运行后返回的目标列就是A3
内容的提问来源于stack exchange,提问作者The L
相关产品推荐
相关产品推荐

