如何更高效地从Pandas DataFrame提取NaN数据至新DataFrame?
更简洁的空值统计DataFrame实现方式
首先得指出你原代码里的一个小问题:columnData.isnull().any().sum()是错误的写法——any()会返回该列是否存在空值的布尔值(True/False),再调用sum()只会得到0或1,没法统计实际的空值数量,正确的统计应该用columnData.isnull().sum()。
接下来给你两种更简洁的实现方式,完全不需要循环:
方法一:利用Series的reset_index转换
empty = dataset.isnull().sum().reset_index() empty.columns = ['Column', 'NaNs']
解释:
dataset.isnull().sum()会生成一个Series,索引是原DataFrame的列名,值对应各列的空值数量reset_index()把索引转为普通列,再通过columns重命名成你需要的列名,两行就搞定。
方法二:直接构造DataFrame(一行实现)
empty = pd.DataFrame({'Column': dataset.columns, 'NaNs': dataset.isnull().sum().values})
解释:直接用原DataFrame的列名列表作为Column列的值,用空值统计结果的数组作为NaNs列的值,一步生成目标DataFrame。
这两种方法都用了pandas的矢量化操作,比循环的效率高得多,代码也更简洁易读。
内容的提问来源于stack exchange,提问作者Karsten S.
相关产品推荐
相关产品推荐

