pd.DataFrame.loc
एक या दो इंडेक्सर्स ले सकते हैं। बाकी पोस्ट के लिए, मैं पहले इंडेक्सर को i
और दूसरा इंडेक्सर j
के रूप में प्रस्तुत करूंगा।
यदि केवल एक अनुक्रमणिका प्रदान की जाती है, तो यह डेटाफ्रेम की अनुक्रमणिका पर लागू होती है और गायब सूचकांक को सभी कॉलम का प्रतिनिधित्व करने के लिए माना जाता है। तो निम्नलिखित दो उदाहरण बराबर हैं।
df.loc[i]
df.loc[i, :]
कहाँ :
सभी स्तंभों का प्रतिनिधित्व करने के लिए किया जाता है।
यदि दोनों सूचकांक मौजूद हैं, i
संदर्भ सूचकांक मान और j
संदर्भ कॉलम मान।
अब हम मान i
और j
के प्रकार क्या यह मान सकते हैं पर ध्यान केंद्रित कर सकते हैं।
df = pd.DataFrame([[1, 2], [3, 4]], index=['A', 'B'], columns=['X', 'Y'])
loc
में लिखा गया है कि इस तरह के i
और j
scalars कि संबंधित सूचकांक में मान होना चाहिए हो सकता है वस्तुओं
: चलो हमारे उदाहरण के रूप में dataframe df
निम्नलिखित का उपयोग करते हैं df.loc['A', 'Y']
2
सरणियों जिसका तत्वों को भी संबंधित सूचकांक वस्तु के सदस्य हैं (ध्यान दें कि मैं loc
को पारित सरणी के आदेश का सम्मान है
df.loc[['B', 'A'], 'X']
B 3
A 1
Name: X, dtype: int64
सूचना वापसी वस्तु की आयामी स्वरूप जब सरणियों गुजर। i
एक सरणी है जैसा ऊपर था, loc
एक ऑब्जेक्ट देता है जिसमें उन मानों के साथ एक अनुक्रमणिका लौटा दी जाती है। इस मामले में, क्योंकि j
एक स्केलर था, loc
pd.Series
ऑब्जेक्ट लौटा। अगर हम i
और j
के लिए एक सरणी पारित करते हैं, तो हम डेटाफ्रेम वापस करने के लिए इसका उपयोग कर सकते थे, और सरणी केवल एक मानी गई सरणी हो सकती थी।
df.loc[['B', 'A'], ['X']]
X
B 3
A 1
बूलियन सरणियों जिसका तत्वों True
या False
कर रहे हैं और जिसकी लंबाई संबंधित सूचकांक की लंबाई से मेल खाता है। इस मामले में, loc
बस पंक्तियों (या कॉलम) को पकड़ता है जिसमें बूलियन सरणी True
है।
df.loc[[True, False], ['X']]
X
A 1
क्या Indexers आप loc
को पारित कर सकते हैं के अलावा, यह भी आप कार्य बनाने के लिए सक्षम बनाता है। अब हम आपके द्वारा प्रदान किए गए कोड की रेखा को तोड़ सकते हैं।
iris_data.loc[iris_data['class'] == 'versicolor', 'class'] = 'Iris-versicolor'
iris_data['class'] == 'versicolor'
एक बूलियन सरणी देता है।
class
एक स्केलर है जो कॉलम ऑब्जेक्ट में मान का प्रतिनिधित्व करता है।
iris_data.loc[iris_data['class'] == 'versicolor', 'class']
रिटर्न सभी पंक्तियों के लिए 'class'
स्तंभ जब एक असाइनमेंट ऑपरेटर के साथ प्रयोग किया जहां 'class'
'versicolor'
है से मिलकर pd.Series
वस्तु:
iris_data.loc[iris_data['class'] == 'versicolor', 'class'] = 'Iris-versicolor'
हम स्तंभ 'class'
जहां 'class'
था में सभी तत्वों के लिए 'Iris-versicolor'
आवंटित 'versicolor'