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

Pandas中axis参数工作原理:为何dropna(axis=1)会删除列?

Pandas axis 参数的实际运行逻辑

认知偏差来自于多数入门教程对axis参数的过度简化,本质上axis指定的是操作执行的遍历方向,而非简单的“操作对象是行还是列”:

  • Pandas 中axis=0对应纵向(沿行索引从上到下的方向),axis=1对应横向(沿列名从左到右的方向)
  • 所有涉及轴的方法,都会沿着指定的轴方向遍历取值做判断/计算,最终保留该轴的原有长度,另一个轴会被聚合压缩或者筛选删除。

两个方法的逻辑拆解

1. df.sum(axis=1)返回行求和结果的原因

sum属于聚合类方法,指定axis=1时,计算沿着横向(跨列方向)遍历每一行的所有列取值求和,每一行的多个列值被聚合成1个结果,最终保留0轴(行索引)的原有长度,所以返回值是每行的求和值,长度和原表行数一致,和运行结果完全匹配:

df.sum(axis=1)
# 输出
# 0   13.0
# 1   17.0
# 2   14.0
# 3    6.0

2. df.dropna(how='any', axis=1)删除列的原因

dropna属于筛选类方法,指定axis=1时,检查逻辑沿着横向(跨列方向)逐列扫描:只要某一列里存在任意一个缺失值,就把这一整列删掉。示例中A列第0行是NaN、C列第3行是NaN,只有B列无缺失值,所以最终A、C列被删除,仅保留B列:

df.dropna(how='any', axis=1)
# 输出
#    B
# 0  9
# 1  8
# 2  3
# 3  3

快速记忆规则

不用死记“axis=0/1对应行还是列”,直接按规则套用即可:

  • 需要得到每行的聚合结果(每行求和、每行均值等),或者删除存在缺失值的列:用axis=1
  • 需要得到每列的聚合结果(每列求和、每列最大值等),或者删除存在缺失值的行:用axis=0

如果要实现“删除所有包含缺失值的行”的需求,正确写法为:

df.dropna(how='any', axis=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:31:35