खोज…


परिचय

डेटाफ्रेम इंडेकर ऑब्जेक्ट्स .ix , .loc , .iloc का उपयोग करके डेटाफ़्रेम में पंक्तियों तक पहुँचना और यह बूलियन मास्क का उपयोग करने से खुद को कैसे अलग करता है।

एक बूलियन इंडेक्स के साथ एक DataFrame एक्सेस करना

यह हमारा उदाहरण डेटा फ्रेम होगा:

df = pd.DataFrame({"color": ['red', 'blue', 'red', 'blue']},
                  index=[True, False, True, False])
      color
True    red
False  blue
True    red
False  blue

के साथ पहुँच .loc

df.loc[True]
     color
True   red
True   red

.iloc साथ एक्सेस करना

df.iloc[True]
>> TypeError

df.iloc[1]
color    blue
dtype: object

यह ध्यान रखना महत्वपूर्ण है कि पुराने पांडा संस्करण बूलियन और पूर्णांक इनपुट के बीच अंतर नहीं करते थे, इस प्रकार .iloc[True] .iloc[1] के समान ही .iloc[1]

.ix साथ एक्सेस करना

df.ix[True]
     color
True   red
True   red

df.ix[1]
color    blue
dtype: object

जैसा कि आप देख सकते हैं, .ix के दो व्यवहार हैं। यह कोड में बहुत बुरा अभ्यास है और इस तरह इसे टाला जाना चाहिए। कृपया अधिक स्पष्ट होने के लिए .iloc या .loc का उपयोग करें।

बूलियन मास्क को डेटाफ़्रेम पर लागू करना

यह हमारा उदाहरण डेटा फ्रेम होगा:

  color      name   size
0   red      rose    big
1  blue    violet    big
2   red     tulip  small
3  blue  harebell  small

जादू का उपयोग करना __getitem__ या [] गौण। इसे उसी लंबाई की सही और गलत की सूची देना, जैसा कि डेटाफ्रेम आपको देगा:

df[[True, False, True, False]]
  color   name   size
0   red   rose    big
2   red  tulip  small

स्तंभ मान के आधार पर मास्किंग डेटा

यह हमारा उदाहरण डेटा फ्रेम होगा:

  color      name   size
0   red      rose    big
1  blue    violet  small
2   red     tulip  small
3  blue  harebell  small

डेटा कॉलम से किसी एक कॉलम तक पहुँचना, हम एक साधारण तुलना == का उपयोग करके दिए गए वेरिएबल के कॉलम के हर तत्व की तुलना कर सकते हैं, एक pd.Series का निर्माण pd.Series । True और False की pd.Series

df['size'] == 'small'
0    False
1     True
2     True
3     True
Name: size, dtype: bool

यह pd.Series एक का एक विस्तार है np.array जो एक साधारण का एक विस्तार है list , इस प्रकार हम को यह हाथ कर सकते हैं __getitem__ या [] उपरोक्त उदाहरण में वर्णित एक्सेसर।

size_small_mask = df['size'] == 'small'
df[size_small_mask]
  color      name   size
1  blue    violet  small
2   red     tulip  small
3  blue  harebell  small

सूचकांक मूल्य के आधार पर मास्किंग डेटा

यह हमारा उदाहरण डेटा फ्रेम होगा:

         color   size
name                 
rose       red    big
violet    blue  small
tulip      red  small
harebell  blue  small

हम एक स्तंभ मान की तरह, सूचकांक मूल्यों के आधार पर एक मुखौटा बना सकते हैं।

rose_mask = df.index == 'rose'
df[rose_mask]
     color size
name           
rose   red  big

लेकिन ऐसा करना लगभग वैसा ही है

df.loc['rose']
color    red
size     big
Name: rose, dtype: object

महत्वपूर्ण अंतर, जब .loc केवल एक पंक्ति का सामना करता है जो कि मेल खाता है, तो यह pd.Series , यदि यह उस मैच से अधिक पंक्तियों का सामना करता है, तो यह pd.DataFrame को लौटा pd.DataFrame । यह इस पद्धति को अस्थिर बनाता है।

इस व्यवहार को .loc एकल प्रविष्टि की सूची देकर नियंत्रित किया जा सकता है। यह उसे डेटा फ़्रेम वापस करने के लिए बाध्य करेगा।

df.loc[['rose']]
         color   size
name                 
rose       red    big


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow