计算股票时间序列移动平均时报'DataFrame object not callable'如何解决
错误原因
- 触发
TypeError: 'DataFrame' object is not callable的核心原因是取列语法错误:代码中使用圆括号()编写aapl('Close'),而DataFrame不是可调用对象,圆括号会被识别为调用操作,不符合pandas语法规范。 - pandas取指定列的正确语法为方括号
[],对应写法应为aapl['Close']。 - 额外注意:直接对原DataFrame的切片结果
aapl新增列,会触发SettingWithCopyWarning警告,建议筛选时调用.copy()生成独立的DataFrame再做修改。
修复方法
将报错行的圆括号替换为方括号,同时在筛选AAPL数据时新增copy()调用即可,修正后的对应代码如下:
# 筛选AAPL数据时加copy避免后续修改触发警告 aapl = dfflat[dfflat['Ticker'] == "AAPL"].copy() windows = [10,20,30] for period in windows: column_name = 'MA for %s in days' % str(period) # 圆括号替换为方括号取Close列 aapl[column_name] = aapl['Close'].rolling(period).mean() aapl.head()
内容的提问来源于stack exchange,提问作者Nripendra Mishra
相关产品推荐
相关产品推荐

