pandas 0.23 - ExtensionArray.take()

pandas.api.extensions.ExtensionArray.take




pandas

pandas.api.extensions.ExtensionArray.take

ExtensionArray.take(indices, allow_fill=False, fill_value=None) [source]

किसी ऐरे से तत्व लें।

पैरामीटर:

सूचकांक : पूर्णांकों का क्रम

लिया जाने वाला संकेत।

allow_fill : बूल, डिफ़ॉल्ट गलत

indices में नकारात्मक मूल्यों को कैसे संभालना है।

  • गलत: indices में नकारात्मक मान दाईं ओर (डिफ़ॉल्ट) से स्थितीय संकेत दर्शाते हैं। यह numpy.take() समान है।
  • सच: indices में नकारात्मक मूल्य लापता मूल्यों को दर्शाते हैं। ये मान fill_value सेट किए गए हैं। कोई भी अन्य नकारात्मक मान एक ValueError बढ़ाते हैं।

fill_value : कोई भी, वैकल्पिक

allow_fill सूचकांकों के लिए उपयोग करने के लिए मान भरें जब allow_fill True है। यह None हो सकता है, जिस स्थिति में प्रकार, self.dtype.na_value लिए डिफ़ॉल्ट NA मान का उपयोग किया जाता है।

कई ExtensionArays के लिए, fill_value दो प्रतिनिधित्व fill_value : एक उपयोगकर्ता-सामना करने वाला "बॉक्सिंग" स्केलर, और एक निम्न-स्तरीय भौतिक NA मान। fill_value उपयोगकर्ता का सामना करने वाला संस्करण होना चाहिए, और कार्यान्वयन को ले जाने की प्रक्रिया के लिए भौतिक संस्करण में अनुवाद करना चाहिए।

यह दिखाता है:
ExtensionArray
जन्म देती है:

IndexError

जब सूचक सरणी के लिए सीमा से बाहर हैं।

ValueError

जब indices में -1 अलावा अन्य नकारात्मक मान होते हैं और allow_fill True होता है।

यह भी देखें

numpy.take() , pandas.api.extensions.take

टिप्पणियाँ

ExtensionArray.take को Series.__getitem__ , .loc , iloc द्वारा बुलाया जाता है, जब indices मूल्यों का एक क्रम होता है। इसके अतिरिक्त, यह एक fill_value साथ Series.reindex() , या Series.reindex() कारण बनने वाली किसी भी अन्य विधि द्वारा कहा जाता है।

उदाहरण

यहां एक उदाहरण कार्यान्वयन है, जो विस्तार सरणी को ऑब्जेक्ट dtype पर कास्टिंग करने पर निर्भर करता है। यह सहायक विधि pandas.api.extensions.take() का उपयोग करता है।

def take(self, indices, allow_fill=False, fill_value=None):
    from pandas.core.algorithms import take

    # If the ExtensionArray is backed by an ndarray, then
    # just pass that here instead of coercing to object.
    data = self.astype(object)

    if allow_fill and fill_value is None:
        fill_value = self.dtype.na_value

    # fill value should always be translated from the scalar
    # type for the array, to the physical storage type for
    # the data, before passing to take.

    result = take(data, indices, fill_value=fill_value,
                  allow_fill=allow_fill)
    return self._from_sequence(result)