TypeError:“Int64Index”对象不可调用
Posted
技术标签:
【中文标题】TypeError:“Int64Index”对象不可调用【英文标题】:TypeError: 'Int64Index' object is not callable 【发布时间】:2021-04-15 17:04:24 【问题描述】:为什么会出现这个错误?
ticker = 'NFLX'
price = get_data(ticker, start_date='2020-01-01', end_date=None, index_as_date=bool, interval ='1d')
price.to_csv(r'D:\Python Stuff\pythonProject\NFLX.csv')
df = pd.read_csv('NFLX.csv')
price_list = df['adjclose']
change = price_list.diff(1)
def RSI():
change.dropna(inplace=True)
positive = change.copy()
negative = change.copy()
positive[positive < 0] = 0
negative[negative > 0] = 0
RSI_days = 5
average_gain = positive.rolling(window=RSI_days).mean()
average_loss = abs(negative.rolling(window=RSI_days).mean())
relative_strength = average_gain/average_loss
rsi = 100.0-(100.0/(1.0+relative_strength))
return rsi
relative_strength_index = RSI()
print(relative_strength_index[-6:])
lowest_rsi = min(relative_strength_index[-6:])
print(lowest_rsi)
index_number = relative_strength_index[-6:].index(lowest_rsi)
print('index of lowest rsi = ' + index_number)
当我运行代码时,我的错误是“TypeError: 'Int64Index' object is not callable”。如何改进此代码以解决此错误?
【问题讨论】:
请指出哪一行导致引发异常 【参考方案1】:将index(lowest_rsi)
中的括号替换为方括号
index_number = relative_strength_index[-6:].index[lowest_rsi.astype(int)]
print('index of lowest rsi = ' + index_number)
编辑:您的代码应该如下所示:
relative_strength_index = RSI()
print(relative_strength_index[-6:])
index_number = relative_strength_index[-6:].idxmin()
print('index of lowest rsi =', index_number)
【讨论】:
这是我得到的:IndexError: 只有整数、切片 (:
)、省略号 (...
)、numpy.newaxis (None
) 和整数或布尔数组是有效的索引
那是因为lowest_rsi
如果你想用它作为索引应该是一个整数。试试lowest_rsi.astype(int)
。我已经相应地编辑了我的答案
现在它说:AttributeError: 'int' object has no attribute 'astype'
除了您在此处显示的内容之外,您是否更改了代码中的其他内容?喜欢在该行之前使用int(lowest_rsi)
?
我没有这样做【参考方案2】:
relative_strength_index
不是列表,而是 pandas.Series 类型。
因此,index 是一个属性,而不是像 list 那样的方法,这是您最初错误的来源,您不能调用该属性。
您应该改为将relative_strength_index
转换为列表,然后您可以继续调用 index 方法,如下所示。
此外,您应该在连接之前将index_number
转换为字符串。
index_number = list(relative_strength_index[ -6: ]).index(lowest_rsi)
print('index of lowest rsi = ' + str(index_number))
【讨论】:
以上是关于TypeError:“Int64Index”对象不可调用的主要内容,如果未能解决你的问题,请参考以下文章
关键错误:[Int64Index...] dtype='int64] 均不在列中
接收 KeyError:“[Int64Index([ ... dtype='int64', length=1323)] 均不在 [columns] 中”
KeyError:“[Int64Index dtype='int64', length=9313)] 都不在 [columns] 中”
KeyError: “None of [Int64Index([...], dtype=‘int64‘, length=739)] are in the [columns]“
仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Int64Index”实例