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

Python:对DataFrame使用.apply()调用自定义函数不生效是什么原因?

代码问题排查

  • 自定义函数m的返回值错误:你计算了x.sum()/len(x)的均值结果,但没有把这个结果返回,反而直接返回了传入的原对象x,相当于函数没有输出你预期的计算结果。
  • apply调用时传参错误:你写的是d.apply(m(),axis=0),这里加括号相当于直接执行m函数,而apply需要接收函数本身作为参数,后续会自动把遍历到的每一行/每一列作为参数传入这个函数,所以只需要填写函数名m即可。

修正后的代码

import pandas as pd
d = pd.DataFrame({"A":[50,60,70],"B":[80,90,100]})

def m(x):
    # 返回计算得到的均值
    return x.sum()/len(x)

# 按列计算均值,axis=0对应按列遍历
print(d.apply(m, axis=0))
# 按行计算均值修改为axis=1即可
# print(d.apply(m, axis=1))

apply运行逻辑说明

  • 当设置axis=0时,apply会把DataFrame的每一列作为Series对象传入自定义函数,每列执行一次函数,最终把所有列的返回结果拼接为一个Series输出。
  • 当设置axis=1时,apply会把DataFrame的每一行作为Series对象传入自定义函数,逐行计算后返回结果。

如果仅需要计算均值,可以直接调用pandas内置的mean()方法,d.mean(axis=0)或d.mean(axis=1),执行效率比自定义函数更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:30:04