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

pandas中sort_values后筛选列行为异常及排序列名获取咨询

缺失值列筛选与排序问题解答

问题1:排序后筛选列出现异常的原因

当你执行data.isna().sum().sort_values()时,得到的是一个按缺失值数量重新排序后的Series——它的索引还是原数据的列名,但顺序已经被打乱了。而你用data.columns[xxx > 0]提取列名时,本质是用xxx > 0生成的布尔数组,去匹配data.columns的原始顺序。布尔数组的位置对应排序后Series的行位置,和原列的位置完全不匹配,自然会提取到错误的列名。

举个直观的例子:排序后的Series里,Car对应的布尔值是True,但这个True在布尔数组里的位置是第18位(从0计数),对应data.columns[18]刚好是Latitude,这就是你得到错误结果的核心原因。

问题2:获取按缺失值升序排列的非零列名列表的方法

正确的思路是先锁定缺失值非零的统计结果,再排序,最后提取列名(即Series的索引),以下是两种简洁可行的写法:

方法一:先筛选再排序

# 先过滤出缺失值>0的统计项,按值升序排序后提取列名转列表
missing_cols = data.isna().sum()[data.isna().sum() > 0].sort_values().index.tolist()

方法二:排序后再筛选

# 先整体排序,再筛选出缺失值>0的项,最后提取列名转列表
missing_cols = data.isna().sum().sort_values().loc[lambda x: x > 0].index.tolist()

两种方法都会得到正确结果:['Car', 'CouncilArea', 'YearBuilt', 'BuildingArea'],完全符合你要的升序排列要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:41:18