找到解决方法后,我不在这里寻找解决方案;大多数情况下,我只是想了解一下为什么原来的方法不起作用,而周围的方法却起作用了。

我有一个带有默认数字键的2803行的数据框。我想将其替换为列0中的值,即TKR。

所以我用f.set_index('TKR')并得到

f.set_index('TKR')

Traceback (most recent call last):

  File "<ipython-input-4-39232ca70c3d>", line 1, in <module>
    f.set_index('TKR')

TypeError: 'str' object is not callable

因此,我认为TKR列中可能会有一些干扰,而不是滚动浏览2803行,而是尝试f.head().set_index('TKR')
当这种方法有效时,我尝试f.head(100).set_index('TKR')也可以。我继续使用500、1000和1500的所有参数。 2800、2801、2802和2803也是如此。
f.head(len(f)).set_index('TKR')
该方法有效,并将在下个月处理其他大小的数据框。我只想了解为什么这样做有效,而按book方法进行的原始,简单和(我认为)无效。

我在Windows 10机器上使用Python 3.6(64位)和Pandas 0.18.1

最佳答案

您可能不小心将pd.DataFrame.set_index()分配了一个值。

此错误的示例:f.set_index = 'intended_col_name'
结果,其余代码.set_index更改为不可调用的str,从而导致此错误。

尝试重新启动笔记本电脑,删除错误的代码,然后将其替换为f.set_index('TKR')

关于python - DataFrame.set_index返回 'str'对象不可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44593223/

10-12 16:52