无法从NumPy数组创建Pandas Series,执行代码时报'int'对象不可调用错误
解决创建Pandas Series时的TypeError: 'int' object is not callable错误
嘿,这个错误我太熟了!你遇到的问题几乎肯定是因为不小心把np.random.randn这个函数名重新赋值成了整数。举个例子,你之前的代码里可能写过类似这样的行:
np.random.randn = 5 # 或者其他整数数值
这就把原本是可调用函数的randn给覆盖成了一个整数,当你再尝试调用np.random.randn(5)的时候,自然会抛出“整数对象不可调用”的错误。
怎么修复呢?
- 第一步,先在你的代码里搜一搜有没有对
np.random.randn赋值的语句,找到后把它删掉或者注释掉。 - 如果你是在Jupyter Notebook或者IPython这类交互式环境里,还可以通过重新导入numpy来重置这个函数:
import numpy as np
重新导入会把numpy模块的属性恢复成初始状态,randn就变回原来的函数啦。
- 最后,重新运行你的Series创建代码就行:
import pandas as pd import numpy as np s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
小提醒
以后尽量别用Python内置函数、库函数的名字当变量名哦,比如randn、print、list这些,很容易不小心覆盖掉原本的功能,引发这类奇怪的错误。要是不确定是不是变量名冲突,还可以先检查一下np.random.randn的类型:
print(type(np.random.randn))
正常情况下输出应该是<class 'function'>,如果是<class 'int'>,那肯定就是被覆盖了。
内容的提问来源于stack exchange,提问作者Yang
相关产品推荐
相关产品推荐

