2015-05-26 25 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> 

मुझे उम्मीद है कि पूर्णांक 1 को s1.iloc(0) के लिए वापस लौटाया जाए, लेकिन इसके बजाय _iLocIndexer ऑब्जेक्ट मिला। मैं इस वस्तु के साथ क्या कर सकता हूं? मैं इसके साथ कैसे काम करूं?पांडा: _iLocIndexer के साथ कैसे काम करें?

+7

वर्ग ब्रैकेट: '[0]' नहीं '(0)' – JohnE

उत्तर

16

@JohnE के कारण समाधान (0) के बजाय iloc के साथ वर्ग ब्रैकेट [0] का उपयोग करना है।

कुछ पांडा कोड के माध्यम से खोदने के बाद कुछ और जानकारी।

s1.ilociloc एक विधि की तरह दिखता है। लेकिन यह एक विशेषता है और विशेषता का मूल्य _iLocIndexer है। _iLocIndexer तर्कों के साथ कॉल करने योग्य है और यह किसी भी तर्क या kwargs को अनदेखा कर रहा है (pandas.core.indexing._NDFrameIndexer देखें। पांडा कोड में पर कॉल करें)। यही कारण है कि s1.iloc(0) एक मान्य कॉल है।

s1.iloc[0] वर्ग कोष्ठक के साथ बुलाया जाता है, तो एक _iLocIndexer instantiated और है iLocIndexer के `GetItem 'विधि के लिए एक कॉल में करने के लिए [] ऑपरेटर परिणाम कॉल।

अन्य सूचकांक - loc, ix, at और iat के लिए भी यही सच है। इन इंडेक्सर्स को क्लास विधि pandas.core.generic.NDFrame._create_indexer में setattr का उपयोग करके स्थापित किया गया है।

संबंधित मुद्दे