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

为何Pandas中axis=1时dropna函数指定subset参数会报错?

关于Pandas dropna中axis与subset参数的逻辑解释

先理清核心逻辑

  • axis=0:操作目标是行,即删除「符合缺失条件的行」
  • axis=1:操作目标是列,即删除「符合缺失条件的列」
  • subset的作用是限定检查缺失值的范围,但这个范围的维度和axis完全对立:要删行就指定检查哪些列;要删列就指定检查哪些行。

用实例理解

场景1:删除行(axis=0)

如果要删除「在col1或col2列中有缺失值的行」,写法如下:

df.dropna(axis=0, subset=['col1', 'col2'])

这里subset传列名逻辑通顺:只检查col1和col2,只要某行在这两列里有缺失,就删掉该行。

场景2:删除列(axis=1)

如果要删除「在第0行或第2行中有缺失值的列」,写法如下:

df.dropna(axis=1, subset=[0, 2])

这里subset传行标签逻辑通顺:只检查第0行和第2行,只要某列在这两行里有缺失,就删掉该列。

为什么你的用法会报错?

你在axis=1时给subset传了列名,Pandas会把这些列名当成行标签去匹配查找,如果你的行标签里没有这些列名,必然会报错。这是因为subset的设计逻辑就是:

当你要删除某一维度(行/列)的元素时,subset用来指定在另一维度的哪些位置检查缺失值。

若你想实现「只检查部分列,删除有缺失的列」?

如果你的真实需求是针对某几列,删除其中存在缺失值的列,直接对目标列处理即可,比如:

cols_to_check = ['col1', 'col2']
# 筛选出cols_to_check中无缺失值的列
df = df[cols_to_check].dropna(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:15:36