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

Python自定义函数仅定义一次无法多次调用 报DataFrame不可调用错误如何解决

可以仅定义一次函数就在for循环中多次调用,你遇到的报错和for循环本身无关,是变量命名冲突导致的问题。

报错原因

你收到的TypeError: 'DataFrame' object is not callable报错,本质是table_for_something这个名称原本指向你定义的函数,但后续你在代码的其他位置将table_for_something赋值为了一个DataFrame对象,原函数定义被覆盖。
Jupyter Notebook 环境中全局变量共享,只要运行过一次类似table_for_something = table_for_something(xxx)的赋值语句,该名称就会指向返回的DataFrame而非函数,第二次调用时自然会报错。只有重新运行函数定义的cell,才能把table_for_something重新指向函数对象,和你观察到的现象完全吻合。

修复方案
  • 避免使用函数名作为接收返回结果的变量名,将调用代码从类似table_for_something = table_for_something(table)的写法,改为res_table = table_for_something(table)即可,只要不覆盖函数名,一次定义可任意次调用
  • 放开函数中第一行被注释的df_1= df_1.copy()代码,避免函数运行时修改传入的原始DataFrame,减少额外副作用
  • 如果已经出现名称被覆盖的情况,除了重新运行函数定义cell,也可以运行del table_for_something删除被覆盖的变量,即可恢复原函数的调用
验证方法

你可以通过以下代码确认问题根源:

# 刚定义完函数时运行,输出为 <class 'function'>
print(type(table_for_something))
# 报错时运行,输出为 <class 'pandas.core.frame.DataFrame'>
print(type(table_for_something))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:18:04