2015-05-26 19 views
11
>>> 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> 

Tamsayı 1'in s1.iloc(0) için döndürülmesini bekledim, ancak bunun yerine _iLocIndexer nesnesini aldım. Bu nesne ile ne yapabilirim? Bununla nasıl çalışırım?pandalar: _iLocIndexer ile nasıl çalışılır?

+7

köşeli parantezler: '[0]' değil '(0)' – JohnE

cevap

16

@JohnE nedeniyle çözüm, iloc ile (0) yerine köşeli parantez [0] kullanmaktır. Bazı panda koduyla kazandıktan sonra bazı bilgiler daha fazla bilgi için:

Bir yöntem gibi görünmektedir.

s1.iloc, iloc gibi görünüyor. Ancak bu bir özniteliktir ve özniteliğin değeri _iLocIndexer'dur. _iLocIndexer argümanlar ile callable ve herhangi bir args veya kwargs yok sayar bir kopyasını döndürür (bkz. Pandas.core.indexing._NDFrameIndexer. pandas kodu arayın). Bu nedenle s1.iloc(0) geçerli bir çağrıdır.

s1.iloc[0] köşeli parantez çağrılır

bir _iLocIndexer örneği ve iLocIndexer sitesindeki `GetItem 'yöntemi bir çağrı [] operatör sonuçlarına çağrı. Aynı diğer dizinleyiciler için de geçerlidir - loc, ix, at ve iat. Bu dizinleyiciler, pandas.core.generic.NDFrame._create_indexer sınıf yönteminde setattr kullanılarak yüklenir.