मुख्य सामग्री पर जाएं

Pandas में Iloc बनाम Loc: उदाहरणों के साथ मार्गदर्शिका

.loc पंक्ति और स्तंभ के नाम (लेबल) से डेटा चुनता है, जबकि .iloc संख्यात्मक सूचकांक (स्थिति) का उपयोग करता है। उदाहरणों के साथ दोनों का उपयोग करना सीखें।
अपडेट किया गया 25 सित॰ 2026  · 8 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

Pandas सीखते समय हम सभी जिन उलझनों से जूझते हैं, उनमें से एक है .loc और .iloc के बीच का अंतर।

आइए इस भ्रम को खत्म करें और इन दोनों विधियों के बीच का फर्क साफ करें। मैं पर्याप्त उदाहरण दूंगा, और उम्मीद है कि ब्लॉग के अंत तक यह अंतर काफी स्पष्ट हो जाएगा।

Pandas में .loc और .iloc क्या हैं?

.loc और .iloc दोनों ही Pandas DataFrames की आवश्यक विशेषताएँ हैं, और दोनों का उपयोग डेटा के विशिष्ट उपसमूह चुनने के लिए किया जाता है। इनका उद्देश्य पूरे DataFrame के बजाय उसके किसी खास हिस्से तक पहुँचना और उसे संशोधित करने में सक्षम बनाना है। 

विशेषता

.loc

.iloc

वाक्य-विन्यास (Syntax)

df.loc[row_indexer, column_indexer]

df.iloc[row_indexer, column_indexer]

इंडेक्सिंग विधि

लेबल-आधारित इंडेक्सिंग

स्थिति-आधारित इंडेक्सिंग

किस संदर्भ में उपयोग

पंक्ति और स्तंभ के लेबल (नाम)

पंक्तियों और स्तंभों के संख्यात्मक सूचकांक (0 से शुरू)

जैसा कि हम तालिका से देख सकते हैं, वाक्य-विन्यास बहुत मिलता-जुलता दिखता है। फर्क इस बात में है कि हम row_indexer और column_indexer आर्ग्युमेंट्स का उपयोग कैसे करते हैं। ऐसा इसलिए है क्योंकि ये दोनों विधियाँ इंडेक्सिंग के अलग-अलग तरीके देती हैं: जहाँ .loc लेबल नामों के आधार पर इंडेक्स करता है, वहीं .iloc पंक्तियों और स्तंभों की संख्यात्मक स्थिति सूचकांकों को आर्ग्युमेंट के रूप में लेता है।

आइए .loc से शुरू करते हुए इन दोनों विधियों को विस्तार से समझें।

.loc का उपयोग: लेबल द्वारा चयन

धारणा समझाने के लिए, एक काल्पनिक ग्राहक डेटाबेस पर विचार करें जो इस DataFrame df द्वारा दर्शाया गया है, जिसमें Customer ID पंक्ति index का प्रतिनिधित्व करता है:

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

C567

David Lee

China

Asia

40

यहाँ .loc के साथ पंक्तियाँ चुनने के चार प्रमुख तरीके हैं। इनमें शामिल हैं:

  • एकल पंक्ति का चयन
  • एकाधिक पंक्तियों का चयन
  • पंक्तियों का स्लाइस चुनना
  • शर्त-आधारित पंक्ति चयन

.loc का उपयोग करके एकल पंक्ति चुनना

एकल पंक्ति चुनने के लिए, हम उस पंक्ति के लेबल को row_indexer के रूप में उपयोग करते हैं जिसे हमें प्राप्त करना है। तदनुसार, वाक्य-विन्यास इस तरह दिखता है: df.loc['row_label']। आइए इसका उपयोग करके हमारे ग्राहक Ali Khan की सारी जानकारी दिखाएँ:

df.loc['C345']

C345

 

Name

Ali Khan

Country

Pakistan

Region

Asia

Age

19

.loc का उपयोग करके एकाधिक पंक्तियाँ चुनना

यदि हम ऐसी कई पंक्तियाँ चुनना चाहते हैं जो क्रम में एक-दूसरे के बाद न आती हों, तो हमें उनके पंक्ति लेबल्स की सूची को row_indexer आर्ग्युमेंट के रूप में पास करना होगा। इसका मतलब है कि हमें दो जोड़ी वर्ग कोष्ठकों का उपयोग करना होगा: एक सामान्य .loc वाक्य-विन्यास के लिए और एक लेबल सूची के लिए।

पंक्ति df.loc[['row_label_1', 'row_label_2']] सूची में निर्दिष्ट df DataFrame की दोनों पंक्तियाँ लौटाएगी। मान लें कि हम Ali Khan के साथ-साथ David Lee की जानकारी भी जानना चाहते हैं:

df.loc[['C345', 'C567']]

Customer ID

Name

Country

Region

Age

C345

Ali Khan

Pakistan

Asia

19

C567

David Lee

China

Asia

40

.loc का उपयोग करके पंक्तियों का स्लाइस चुनना

हम दो पंक्ति लेबल्स के बीच कॉलन लगाकर पंक्तियों की एक रेंज चुन सकते हैं: df.loc['row_label_start':'row_label_end']। हम अपने DataFrame की पहली चार पंक्तियाँ इस तरह दिखा सकते हैं:

df.loc['C123' : 'C456']

Customer ID

Name

Country

Region

Signup Date

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

यहाँ दो बातों का ध्यान रखें:

  1. आउटपुट में row_label_end में निर्दिष्ट पंक्ति भी शामिल होती है। यह .iloc से अलग है, जिसके बारे में हम आगे बात करेंगे।
  2. भले ही हम कई पंक्तियाँ प्राप्त करना चाहते हैं, हम केवल एक जोड़ी वर्ग कोष्ठक का उपयोग करते हैं। हम विभिन्न पंक्तियाँ निर्दिष्ट करने के लिए सूची का उपयोग नहीं करते, इसलिए दो वर्ग कोष्ठक उपयोग करने पर SyntaxError मिलेगा।

.loc का उपयोग करके शर्त-आधारित पंक्ति चयन

हम शर्तात्मक अभिव्यक्ति के आधार पर पंक्तियाँ भी लौटा सकते हैं। हम किसी शर्त को पूरा करने-न करने के आधार पर सभी पंक्तियों को फ़िल्टर कर सकते हैं और केवल वही दिखा सकते हैं जो शर्त पूरी करती हैं।

इसका वाक्य-विन्यास है df.loc[conditional_expression], जहाँ conditional_expression किसी विशेष स्तंभ में स्वीकृत मानों पर आधारित कथन होता है।

गैर-संख्यात्मक डेटा वाले स्तंभों (जैसे Name या Country) में, कथन केवल समता या असमता ऑपरेटर का उपयोग कर सकता है, क्योंकि मानों के बीच कोई क्रम नहीं होता। उदाहरण के लिए, हम एशिया से नहीं होने वाले सभी ग्राहकों की पंक्तियाँ लौटा सकते हैं:

df.loc[df['Region'] != 'Asia']

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C234

Petra Müller

Germany

Europe

51

C456

Maria Gonzalez

Mexico

North America

26

.loc का उपयोग करके एकल स्तंभ चुनना

स्तंभ चुनने के लिए, हमें row_indexer आर्ग्युमेंट के बाद आने वाले column_indexer आर्ग्युमेंट को निर्दिष्ट करना होता है। यदि हम केवल column_indexer निर्दिष्ट करना चाहते हैं, तो हमें यह भी चिह्नित करना होगा कि हम सभी पंक्तियाँ लौटाना चाहते हैं और केवल स्तंभों पर फ़िल्टर करना चाहते हैं। आइए देखें यह कैसे किया जा सकता है!

एकल स्तंभ का चयन संबंधित स्तंभ के लेबल के साथ column_indexer निर्दिष्ट करके किया जा सकता है। सभी पंक्तियाँ प्राप्त करने के लिए, हमें row_indexer को एक साधारण कॉलन से निर्दिष्ट करना होगा। इस तरह का वाक्य-विन्यास बनता है: df.loc[:, 'column_name']।

आइए प्रत्येक ग्राहक का Name दिखाएँ:

df.loc[:, 'Name']

Customer ID

Name

C123

John Doe

C234

Petra Müller

C345

Ali Khan

C456

Maria Gonzalez

C567

David Lee

.loc का उपयोग करके एकाधिक स्तंभ चुनना

एकाधिक स्तंभ चुनने के लिए, जो क्रम में एक-दूसरे के बाद न हों, हमें स्तंभ लेबल्स की सूची पास करनी होगी: df.loc[:, [col_label_1, 'col_label_2']]।

मान लें कि हम अपने पिछले आउटपुट में सभी ग्राहकों की Age भी जोड़ना चाहते हैं, तो यह इस तरह काम करेगा:

df.loc[:, ['Name', 'Age']]

Customer ID

Name

Age

C123

John Doe

67

C234

Petra Müller

51

C345

Ali Khan

19

C456

Maria Gonzalez

26

C567

David Lee

40

.loc का उपयोग करके स्तंभों का स्लाइस चुनना

दो स्तंभों के लेबल्स के बीच कॉलन का उपयोग करने से निर्दिष्ट स्तंभों के बीच के क्रमिक दायरे के सभी स्तंभ चुने जाते हैं। यह अंत वाले स्तंभ को भी शामिल करता है, यानी मानक वाक्य-विन्यास df.loc[:, 'col_start':'col_end'] में col_end नामक स्तंभ भी चुना जाएगा।

यदि हमें अपने ग्राहकों के Name, Country, और Region में रुचि हो, तो हमारी कोड पंक्ति कुछ यूँ होगी:

df.loc[:, 'Name':'Region']

Customer ID

Name

Country

Region

C123

John Doe

United States

North America

C234

Petra Müller

Germany

Europe

C345

Ali Khan

Pakistan

Asia

C456

Maria Gonzalez

Mexico

North America

C567

David Lee

China

Asia

.loc के साथ संयुक्त पंक्ति और स्तंभ चयन

हम row_indexer और column_indexer दोनों को भी निर्दिष्ट कर सकते हैं। इसका उपयोग एकल जानकारी, यानी DataFrame की एक सेल, प्राप्त करने में किया जा सकता है। ऐसा करने के लिए, हम इस वाक्य-विन्यास का उपयोग करते हुए एक पंक्ति और एक स्तंभ निर्दिष्ट करते हैं: df.loc['row_label', 'column_name'] ।

अधिक उपयोगी स्थिति यह है कि हम एक ऐसा उप-DataFrame लौटाएँ जो ठीक उन्हीं पंक्तियों और स्तंभों पर केंद्रित हो जिनमें हमें रुचि है। दोनों इंडेक्सर को सूची के रूप में वर्ग कोष्ठकों के साथ, या कॉलन के साथ स्लाइस के रूप में निर्दिष्ट करना संभव है, और पंक्ति चयन के लिए इसे शर्तात्मक अभिव्यक्ति के साथ जोड़ना भी।

यह उदाहरण प्रत्येक ऐसे ग्राहक के Name, Country, और Region लौटाता है जिनकी Age 30 से अधिक है:

df.loc[df['Age'] > 30, 'Name':'Region']

Customer ID

Name

Country

Region

C123

John Doe

United States

North America

C234

Petra Müller

Germany

Europe

C567

David Lee

China

Asia

.iloc का उपयोग: पूर्णांक स्थिति द्वारा चयन

.iloc लेबल के बजाय स्थिति से चयन करता है। .iloc का मानक वाक्य-विन्यास है: df.iloc[row_indexer, column_indexer]। ध्यान देने योग्य दो खास बातें हैं:

  • गिनती 0 से शुरू होती है: पहली पंक्ति और स्तंभ का सूचकांक 0 होता है, दूसरी का 1, इत्यादि।
  • रेंज के अंत मान की अपवर्जकता: स्लाइस का उपयोग करते समय, कॉलन के बाद निर्दिष्ट पंक्ति या स्तंभ चयन में शामिल नहीं होता।

.iloc का उपयोग करके एकल पंक्ति चुनना

एकल पंक्ति को row_indexer के रूप में पंक्ति सूचकांक संख्या दर्शाने वाले पूर्णांक का उपयोग करके चुना जा सकता है। हमें उद्धरण चिह्नों की आवश्यकता नहीं है क्योंकि हम .loc की तरह लेबल स्ट्रिंग नहीं, बल्कि पूर्णांक दर्ज कर रहे हैं। df नामक DataFrame की पहली पंक्ति लौटाने के लिए df.iloc[0] दर्ज करें।

हमारे उदाहरण DataFrame में, यही कोड पंक्ति John Doe की जानकारी लौटाती है:

df.iloc[0]

C123

 

Name

John Doe

Country

United States

Region

North America

Age

67

.iloc का उपयोग करके एकाधिक पंक्तियाँ चुनना

.iloc में एकाधिक पंक्तियाँ चुनना .loc जैसा ही काम करता है—हम पंक्ति सूचकांक पूर्णांकों को वर्ग कोष्ठकों वाली सूची में दर्ज करते हैं। वाक्य-विन्यास इस तरह दिखता है: df.iloc[[0, 3, 4]]।

हमारी ग्राहक तालिका में संबंधित आउटपुट नीचे देखा जा सकता है:

df.iloc[[0, 3, 4]]

Customer ID

Name

Country

Region

Age

C123

John Doe

United States

North America

67

C456

Maria Gonzalez

Mexico

North America

26

C567

David Lee

China

Asia

40

.iloc का उपयोग करके पंक्तियों का स्लाइस चुनना

पंक्तियों का स्लाइस चुनने के लिए, हम दो निर्दिष्ट पंक्ति सूचकांक पूर्णांकों के बीच कॉलन का उपयोग करते हैं। अब, हमें पहले बताई गई अपवर्जकता पर ध्यान देना होगा। 

हम इस धारणा को समझाने के लिए पंक्ति df.iloc[1:4] ले सकते हैं। सूचकांक संख्या 1 का अर्थ है दूसरी पंक्ति, इसलिए हमारा स्लाइस वहीं से शुरू होता है। सूचकांक पूर्णांक 4 पाँचवीं पंक्ति को दर्शाता है — लेकिन चूँकि .iloc स्लाइस चयन के लिए समावेशी नहीं है, हमारा आउटपुट इस पंक्ति से ठीक पहले तक की सभी पंक्तियाँ शामिल करेगा। इसलिए, यह दूसरी, तीसरी और चौथी पंक्ति लौटाएगा। 

आइए साबित करें कि यह पंक्ति अपेक्षा के अनुसार काम करती है:

df.iloc[1:4]

Customer ID

Name

Country

Region

Age

C234

Petra Müller

Germany

Europe

51

C345

Ali Khan

Pakistan

Asia

19

C456

Maria Gonzalez

Mexico

North America

26

.iloc का उपयोग करके एकल स्तंभ चुनना

.iloc से स्तंभ चुनने का तर्क अब तक जो हमने सीखा है उसका अनुसरण करता है। आइए देखें यह एकल स्तंभ, एकाधिक स्तंभ, और स्तंभ स्लाइस के लिए कैसे काम करता है।

.loc की तरह ही, column_indexer पर जाने से पहले row_indexer निर्दिष्ट करना महत्वपूर्ण है। df की प्रत्येक पंक्ति के लिए तीसरे स्तंभ के मान प्राप्त करने हेतु हम df.iloc[:, 2] दर्ज करते हैं।

क्योंकि हमारे DataFrame में Region तीसरा स्तंभ है, इस कोड पंक्ति के परिणामस्वरूप वही प्राप्त होगा:

df.iloc[:, 2]

Customer ID

Region

C123

North America

C234

Europe

C345

Asia

C456

North America

C567

Asia

.iloc का उपयोग करके एकाधिक स्तंभ चुनना

ऐसे कई स्तंभ चुनने के लिए जो अनिवार्य रूप से क्रमागत न हों, हम फिर से column_indexer के रूप में पूर्णांकों वाली सूची दर्ज कर सकते हैं। पंक्ति df.iloc[:, [0, 3]] पहला और चौथा दोनों स्तंभ लौटाती है। 

हमारे मामले में, प्रदर्शित जानकारी प्रत्येक ग्राहक का Name तथा Age है:

df.iloc[:, [0, 3]]

Customer ID

Name

Age

C123

John Doe

67

C234

Petra Müller

51

C345

Ali Khan

19

C456

Maria Gonzalez

26

C567

David Lee

40

.iloc का उपयोग करके स्तंभों का स्लाइस चुनना

.iloc के साथ स्लाइस चयन के लिए, column_indexer का तर्क row_indexer जैसा ही है। कॉलन के बाद जिस पूर्णांक द्वारा स्तंभ दर्शाया गया है, वह आउटपुट में शामिल नहीं होता। दूसरा और तीसरा स्तंभ प्राप्त करने के लिए, कोड पंक्ति इस प्रकार होनी चाहिए: df.iloc[:, 1:3]।

नीचे दी गई पंक्ति हमारे ग्राहकों के बारे में उपलब्ध सभी भौगोलिक जानकारी लौटाती है:

df.iloc[:, 1:3]

Customer ID

Country

Region

C123

United States

North America

C234

Germany

Europe

C345

Pakistan

Asia

C456

Mexico

North America

C567

China

Asia

.iloc के साथ संयुक्त पंक्ति और स्तंभ चयन

हम .iloc के बारे में जो सीखे हैं, उन्हें मिलाकर पंक्ति और स्तंभ चयन को संयोजित कर सकते हैं। फिर से, एकल सेल या उप-DataFrame दोनों लौटाना संभव है। पंक्ति 3 और स्तंभ 4 के प्रतिच्छेद पर एकल सेल लौटाने के लिए हम df.iloc[2, 3] दर्ज करते हैं।

.loc की तरह ही, हम दोनों इंडेक्सर्स को सूची के रूप में वर्ग कोष्ठकों से या कॉलन के साथ स्लाइस के रूप में निर्दिष्ट कर सकते हैं। यदि हम शर्तात्मक अभिव्यक्तियों का उपयोग करके पंक्तियाँ चुनना चाहते हैं, तो वह तकनीकी रूप से .iloc के साथ भी संभव है, लेकिन अनुशंसित नहीं। लेबल नामों और .loc का उपयोग आमतौर पर अधिक सहज और त्रुटि-रोधी होता है।

यह अंतिम उदाहरण हमारे DataFrame की पहली, दूसरी और पाँचवीं पंक्ति के लिए Country, Region और Age दिखाता है:

df.iloc[[0,1,4], 1:4]

Customer ID

Country

Region

Age

C123

United States

North America

67

C234

Germany

Europe

51

C567

China

Asia

40

.iloc बनाम .loc: किसे कब उपयोग करें

आम तौर पर, एक आसान नियम है जहाँ विधि का चयन आपके DataFrame के बारे में ज्ञान पर निर्भर करता है:

  • .loc का उपयोग करें जब आपको पंक्तियों/स्तंभों के लेबल (नाम) पता हों।
  • .iloc का उपयोग करें जब आपको पंक्तियों/स्तंभों की पूर्णांक स्थितियाँ पता हों।

कुछ परिदृश्यों में स्वभावतः .loc या .iloc में से किसी एक का पक्ष होता है। उदाहरण के लिए, पंक्तियों या स्तंभों पर इटरेट करना लेबल्स की तुलना में पूर्णांकों से आसान और अधिक सहज होता है। जैसा कि हमने पहले उल्लेख किया, स्तंभ मानों पर आधारित शर्तों के अनुसार पंक्तियों को फ़िल्टर करना स्तंभ लेबल नामों का उपयोग करते समय कम त्रुटिप्रवण होता है।

.loc को प्राथमिकता देने वाले परिदृश्य

.iloc को प्राथमिकता देने वाले परिदृश्य

आपके DataFrame में अर्थपूर्ण इंडेक्स/स्तंभ नाम हैं।

आप पंक्तियों/स्तंभों पर उनकी स्थिति के अनुसार इटरेट कर रहे हैं।

आपको स्तंभ मानों पर शर्त आधारित फ़िल्टरिंग करनी है।

इंडेक्स/स्तंभ नाम आपके कार्य के लिए प्रासंगिक नहीं हैं।

.loc और .iloc के साथ KeyError, NameError, और IndexError

आइए संभावित समस्याओं पर नज़र डालें। .loc का उपयोग करते समय एक सामान्य गलती है KeyError का सामना करना। यह त्रुटि तब होती है जब हम किसी ऐसी पंक्ति या स्तंभ लेबल तक पहुँचने की कोशिश करते हैं जो हमारे DataFrame में मौजूद नहीं है। इससे बचने के लिए, हमें हमेशा यह सुनिश्चित करना चाहिए कि जिन लेबल्स का हम उपयोग कर रहे हैं वे सटीक हों, आपके DataFrame में मौजूद लेबल्स से मेल खाते हों, और टाइपो के लिए दोबारा जाँचें।

इसके अलावा, .loc के साथ निर्दिष्ट लेबल्स के लिए हमेशा उद्धरण चिह्नों का उपयोग करना महत्वपूर्ण है। उन्हें भूल जाने पर NameError मिलेगा।

एक IndexError तब हो सकता है जब हम .iloc का उपयोग करते हुए ऐसा पूर्णांक स्थान निर्दिष्ट करें जो हमारे DataFrame के सूचकांकों की वैध सीमा से बाहर हो। यह तब होता है जब वह सूचकांक मौजूद नहीं होता—या तो इसलिए कि वह आपके DataFrame में पंक्तियों या स्तंभों की संख्या से अधिक है, या इसलिए कि वह नकारात्मक मान है। इस त्रुटि से बचने के लिए, अपने DataFrame के आयाम जाँचें और वैध सीमा के भीतर उपयुक्त सूचकांक मानों का उपयोग करें।

निष्कर्ष

आशा है यह ब्लॉग सहायक रहा होगा और अब .loc और .iloc के बीच का भेद स्पष्ट है। और सीखने के लिए, ये कुछ अच्छे अगले कदम हैं:


Tom Farnschläder's photo
Author
Tom Farnschläder
LinkedIn

टॉम एक डेटा साइंटिस्ट और तकनीकी शिक्षक हैं। वे DataCamp के डेटा साइंस ट्यूटोरियल्स और ब्लॉग पोस्ट लिखते और प्रबंधित करते हैं। इससे पहले, टॉम ने Deutsche Telekom में डेटा साइंस में काम किया था।

विषय
डेटा साइंस
Python

Pandas इन पाठ्यक्रमों के साथ सीखें!

{count, plural, one {कोर्स} other {कोर्स}}

pandas के साथ Data Manipulation

{hours} घंटा
566.6K
डेटा इम्पोर्ट और क्लीनिंग, सांख्यिकी गणना, और pandas के साथ विज़ुअलाइज़ेशन बनाना सीखें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

{count, plural, one {कोर्स} other {कोर्स}}

pandas के साथ मार्केटिंग कैंपेनों का विश्लेषण

{hours} घंटा
34.6K
pandas कौशल बढ़ाएँ और मर्जिंग, स्लाइसिंग, विज़ुअलाइज़िंग आदि से मार्केटिंग सवालों के जवाब दें!
और देखेंRight Arrow