2015-07-22 9 views
15

क्या कोई बता सकता है कि पाइथन पांडा में स्थानीय रूप से दिखाए गए उदाहरणों के साथ क्यों उपयोग किया जाता है?पांडा में

for i in range(0, 2): 
    for j in range(0, 3): 
    df.loc[(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1), 
      'AgeFill'] = median_ages[i,j] 
+1

आपके उदाहरण में, '.loc' मुख्य रूप से उपयोग किया जाता है क्योंकि आप कॉलम अनुक्रमणिका' आयुफिल' के माध्यम से किसी सेल तक पहुंचने का प्रयास करते हैं। –

उत्तर

19

.loc के उपयोग यहाँ की सिफारिश की है क्योंकि तरीकों df.Age.isnull(), df.Gender == i और df.Pclass == j+1 डेटा फ्रेम के स्लाइस के एक दृश्य वापस आ सकते हैं या एक प्रति वापस आ सकते हैं। यह पांडा को भ्रमित कर सकता है।

यदि आप .loc का उपयोग नहीं करते हैं तो आप श्रृंखला में सभी 3 स्थितियों को कॉल करते हैं जो आपको चेन इंडेक्सिंग नामक समस्या का कारण बनता है। जब आप .loc का उपयोग करते हैं, तो आप एक ही चरण में अपनी सभी स्थितियों तक पहुंचते हैं और पांडा अब भ्रमित नहीं होते हैं।

.loc का उपयोग न करने के कुछ उदाहरणों के साथ आप इसके बारे में अधिक पढ़ सकते हैं pandas documentation में ऑपरेशन विफल हो जाएगा।

सरल जवाब है कि जब तुम अक्सर .loc का उपयोग कर और केवल (उदाहरण के लिए)

df['Age_fill'][(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1)] \ 
                  = median_ages[i,j] 

टाइपिंग नहीं के साथ भाग प्राप्त कर सकते हैं तो आप हमेशा SettingWithCopy चेतावनी प्राप्त होगा और आपका कोड के लिए एक छोटे से मेसियर हो जाएगा यह।

मेरे अनुभव में .loc ने मुझे अपना सिर पाने के लिए कुछ समय लगाया है और यह मेरे कोड को अपडेट करने में थोड़ा परेशान रहा है। लेकिन यह वास्तव में बहुत ही सरल और बहुत सहज है: df.loc[row_index,col_indexer]

अधिक जानकारी के लिए Indexing and Selecting Data पर पांडा दस्तावेज़ देखें।