You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于pandas中DataFrame.apply()方法axis参数取值的疑问

关于pandas中DataFrame.apply()方法axis参数取值的疑问

完全懂你的困惑!我刚接触pandas的时候,对着apply()的axis参数也挠过好几次头——明明之前记的axis=0对应行、axis=1对应列,怎么到这里好像反过来了?

其实这个逻辑说透了就很简单,核心是要搞懂pandas里axis参数的本质:它指的是函数要沿着哪个轴的方向去“滑动应用”,或者说,要将哪个轴的维度“合并计算”。针对DataFrame.apply()具体来说:

  • 当设置axis=0(默认值)时,函数会沿着列的垂直方向(从上到下)应用:也就是把每一列的所有行元素作为输入,传给你指定的函数。比如对每一列求和,最终返回的结果会对应原DataFrame的每一列。
  • 当设置axis=1时,函数会沿着行的水平方向(从左到右)应用:也就是把每一行的所有列元素作为输入,传给你指定的函数。比如对每行求最大值,最终返回的结果会对应原DataFrame的每一行。

给你举个直观的代码例子就清楚了:

import pandas as pd
# 构造一个简单的DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# axis=0:对每一列应用sum函数
col_sum = df.apply(sum, axis=0)
print(col_sum)
# 输出:
# A     6
# B    15
# dtype: int64

# axis=1:对每一行应用sum函数
row_sum = df.apply(sum, axis=1)
print(row_sum)
# 输出:
# 0    5
# 1    7
# 2    9
# dtype: int64

最后给你个好记的小技巧:

  • axis=0想成“竖轴”,函数顺着竖线(列)走,处理每一列的所有行
  • axis=1想成“横轴”,函数顺着横线(行)走,处理每一行的所有列

其实不止apply(),pandas里大部分函数的axis参数逻辑都是统一的,只是apply()的场景更容易让我们混淆“操作对象”和“操作方向”,多写两次实例就能刻进脑子里啦!

火山引擎 最新活动