熊猫:如何使用_iLocIndexer?

use*_*654 15 python python-2.7 pandas

>>> import pandas as pd
>>> pd.__version__
'0.16.1'
>>> s1 = pd.Series([1, 3, 5], index=list('abc'))
>>> s1.iloc(0)
<pandas.core.indexing._iLocIndexer object at 0x10ca3f690>
Run Code Online (Sandbox Code Playgroud)

我期望返回整数1 s1.iloc(0),但是得到了一个_iLocIndexer对象.我该怎么办这个对象?我该如何使用它?

use*_*654 21

该解决方案,由于@JohnE,就是用方括号[0],而不是(0)iloc.

通过挖掘一些熊猫代码后的更多信息.

s1.iloc使得iloc看起来像一个方法.但它是一个属性,属性的值是_iLocIndexer. _iLocIndexer可以使用参数调用,并返回自身的副本,忽略任何args或kwargs(请参阅pandas.core.indexing._NDFrameIndexer.调用 pandas代码).这就是s1.iloc(0)有效呼叫的原因.

s1.iloc[0]使用方括号调用时,_iLocIndexer会实例化一个并且对[]运算符的调用会导致调用iLocIndexer'`getitem'方法.

这同样适用于其他索引真的- ,,loc 和.这些索引器使用类方法pandas.core.generic.NDFrame._create_indexer 进行安装.ixatiatsetattr