创建新DataFrame时出现'DataFrame' object is not callable错误排查
解决DataFrame对象不可调用的错误
嘿,这个问题我熟!你遇到的'DataFrame' object is not callable错误,根源特别明确——你把Pandas的DataFrame对象当成函数来调用了。
错误原因拆解
在你的代码里,你写了:
df_features = df_exo(['INDU.NL.INTM.1.BS.M', 'INDU.NL.CONS.1.BS.M_4', 'INDU.NL.INTM.2.BS.M', 'INDU.NL.INTM.3.BS.M_12', 'INDU.NL.CONS.4.BS.M_10', 'INDU.NL.INTM.COF.BS.M_3', 'INDU.NL.INTM.COF.BS.M_4', 'INDU.NL.INVE.5.BS.M_11', 'INDU.NL.FOBE.7.BS.M_4', 'INDU.NL.TOT.1.BS.M_1', 'INDU.NL.TOT.6.BS.M_4', 'INDU.NL.INTM.2.BS.M', 'SERV.NL.TOT.2.BS.M', 'SERV.NL.TOT.3.BS.M', 'SERV.NL.TOT.1.BS.M_2', 'SERV.NL.TOT.1.BS.M_3', 'SERV.NL.TOT.3.BS.M_1', 'SERV.NL.TOT.3.BS.M_2', 'SERV.NL.TOT.COF.BS.M_7', 'CONS.NL.TOT.7.BS.M', 'CONS.NL.TOT.6.BS.M_12', 'CONS.NL.TOT.7.BS.M_1', 'CONS.NL.TOT.7.BS.M_2', 'CONS.NL.TOT.7.BS.M_12', 'BUIL.NL.TOT.3.BS.M_12'])
这里的df_exo(...)是错误用法:df_exo是一个DataFrame实例,不是可调用的函数,不能用圆括号()来传递参数。Pandas里选取列的正确方式是用方括号[]。
修正后的代码
把圆括号换成方括号就能解决问题:
df_features = df_exo[['INDU.NL.INTM.1.BS.M', 'INDU.NL.CONS.1.BS.M_4', 'INDU.NL.INTM.2.BS.M', 'INDU.NL.INTM.3.BS.M_12', 'INDU.NL.CONS.4.BS.M_10', 'INDU.NL.INTM.COF.BS.M_3', 'INDU.NL.INTM.COF.BS.M_4', 'INDU.NL.INVE.5.BS.M_11', 'INDU.NL.FOBE.7.BS.M_4', 'INDU.NL.TOT.1.BS.M_1', 'INDU.NL.TOT.6.BS.M_4', 'INDU.NL.INTM.2.BS.M', 'SERV.NL.TOT.2.BS.M', 'SERV.NL.TOT.3.BS.M', 'SERV.NL.TOT.1.BS.M_2', 'SERV.NL.TOT.1.BS.M_3', 'SERV.NL.TOT.3.BS.M_1', 'SERV.NL.TOT.3.BS.M_2', 'SERV.NL.TOT.COF.BS.M_7', 'CONS.NL.TOT.7.BS.M', 'CONS.NL.TOT.6.BS.M_12', 'CONS.NL.TOT.7.BS.M_1', 'CONS.NL.TOT.7.BS.M_2', 'CONS.NL.TOT.7.BS.M_12', 'BUIL.NL.TOT.3.BS.M_12']]
额外小提示
- 如果只需要选取单个列,直接写
df_exo['列名']即可,返回的是Series对象; - 如果要选取多个列,必须把列名放在一个列表里再用方括号包裹,这样返回的就是你需要的新DataFrame对象
df_features。
内容的提问来源于stack exchange,提问作者Nora
相关产品推荐
相关产品推荐

