pandas 0.23 - DataFrame.apply()

pandas.DataFrame.apply




pandas

pandas.DataFrame.apply

DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds) [source]

DataFrame की धुरी के साथ एक फ़ंक्शन लागू करें।

फ़ंक्शन में पास की गई ऑब्जेक्ट श्रृंखला ऑब्जेक्ट हैं जिनकी इंडेक्स या तो डेटाफ्रेम का इंडेक्स ( axis=0 ) या डेटाफ़्रेम के कॉलम ( axis=1 ) है। डिफ़ॉल्ट रूप से ( result_type=None ), अंतिम रिटर्न प्रकार लागू फ़ंक्शन के रिटर्न प्रकार से अनुमानित है। अन्यथा, यह result_type तर्क पर निर्भर करता है।

पैरामीटर:

func : फ़ंक्शन

प्रत्येक स्तंभ या पंक्ति पर लागू होने का कार्य।

अक्ष : {0 या 'इंडेक्स', 1 या 'कॉलम'}, डिफ़ॉल्ट 0

एक्सिस जिसके साथ फंक्शन लागू होता है:

  • 0 या 'इंडेक्स': प्रत्येक कॉलम में फंक्शन लागू करें।
  • 1 या 'कॉलम': प्रत्येक पंक्ति में फ़ंक्शन लागू करें।

प्रसारण : बूल, वैकल्पिक

एकत्रीकरण कार्यों के लिए केवल प्रासंगिक:

  • False या None : एक श्रृंखला लौटाता है जिसकी लंबाई सूचकांक की लंबाई या स्तंभों की संख्या ( axis पैरामीटर के आधार पर) होती है
  • True : परिणाम फ्रेम के मूल आकार में प्रसारित किए जाएंगे, मूल सूचकांक और कॉलम बरकरार रहेंगे।

संस्करण 0.23.0 के बाद से पदावनत: इस तर्क को भविष्य के संस्करण में हटा दिया जाएगा, जिसके परिणामस्वरूप result_type = 'प्रसारण' हो जाएगा।

कच्चा : बूल, डिफ़ॉल्ट गलत

  • False : प्रत्येक पंक्ति या स्तंभ को फ़ंक्शन की श्रृंखला के रूप में पास करता है।
  • True : पारित फ़ंक्शन के बजाय ndarray ऑब्जेक्ट्स प्राप्त करेंगे। यदि आप केवल एक NumPy रिडक्शन फंक्शन लागू कर रहे हैं तो यह बेहतर प्रदर्शन प्राप्त करेगा।

कम करें : बूल या कोई नहीं, डिफ़ॉल्ट रूप से कोई भी नहीं

कमी प्रक्रियाओं को लागू करने का प्रयास करें। यदि DataFrame खाली है, तो यह निर्धारित reduce लिए कि क्या श्रृंखला या DataFrame होना चाहिए, apply reduce लिए उपयोग reduce करेगा। यदि reduce=None (डिफ़ॉल्ट), apply 's रिटर्न वैल्यू का अनुमान एक खाली सीरीज़ पर func कॉल करके लगाया जाएगा (ध्यान दें: अनुमान लगाते समय, func द्वारा उठाए गए अपवादों को अनदेखा किया जाएगा)। यदि reduce=True एक श्रृंखला हमेशा लौटा दी जाएगी, और यदि reduce=False एक डेटाफ़्रेम हमेशा लौटाया जाएगा।

संस्करण 0.23.0 के बाद से पदावनत: इस तर्क को भविष्य के संस्करण में हटा दिया जाएगा, जिसके परिणामस्वरूप result_type='reduce'

result_type : {'Expand', 'कम करें', 'प्रसारण', कोई नहीं}, डिफ़ॉल्ट कोई नहीं

ये केवल तब कार्य करते हैं जब axis=1 (कॉलम):

  • 'विस्तार': सूची-जैसे परिणाम कॉलम में बदल जाएंगे।
  • 'कम': सूची-जैसे परिणामों के विस्तार के बजाय यदि संभव हो तो एक श्रृंखला देता है। यह 'विस्तार' के विपरीत है।
  • 'प्रसारण': परिणाम डेटाफ्रैम के मूल आकार में प्रसारित किया जाएगा, मूल सूचकांक और कॉलम बरकरार रहेंगे।

डिफ़ॉल्ट व्यवहार (कोई नहीं) लागू फ़ंक्शन के वापसी मूल्य पर निर्भर करता है: सूची-जैसे परिणाम उन लोगों की श्रृंखला के रूप में वापस आ जाएंगे। हालाँकि यदि लागू फ़ंक्शन एक श्रृंखला देता है तो ये स्तंभों तक विस्तारित हो जाते हैं।

संस्करण में नया 0.23.0।

args : tuple

सरणी / श्रृंखला के अतिरिक्त func को पारित करने के लिए स्थिति संबंधी तर्क।

** kwds

अतिरिक्त कीवर्ड तर्कों को func लिए तर्क के रूप में पारित करने के लिए।

यह दिखाता है:
applied : Series or DataFrame

यह भी देखें

DataFrame.applymap
एलिमेंट ऑपरेशंस के लिए
DataFrame.aggregate
केवल एकत्रित प्रकार के संचालन करते हैं
DataFrame.transform
केवल ट्रांसफॉर्मिंग प्रकार के ऑपरेशन करें

टिप्पणियाँ

वर्तमान कार्यान्वयन में यह तय करने के लिए कि यह तेज़ या धीमा कोड पथ ले सकता है, पहले कॉलम / पंक्ति पर दो बार कॉल func लागू करें। इससे अनपेक्षित व्यवहार हो सकता है यदि func के दुष्प्रभाव होते हैं, क्योंकि वे पहले स्तंभ / पंक्ति के लिए दो बार प्रभावी होंगे।

उदाहरण

>>> df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

एक संख्यात्मक सार्वभौमिक फ़ंक्शन का उपयोग करना (इस मामले में np.sqrt(df) ):

>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

किसी अक्ष पर एक कम करने वाले फ़ंक्शन का उपयोग करना

>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype: int64
>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype: int64

एक सूची की तरह फिर से एक श्रृंखला में परिणाम होगा

>>> df.apply(lambda x: [1, 2], axis=1)
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype: object

Passing result_type = 'Expand' सूची-जैसे परिणामों को एक डेटाफ़्रेम के स्तंभों तक विस्तारित करेगा

>>> df.apply(lambda x: [1, 2], axis=1, result_type='expand')
   0  1
0  1  2
1  1  2
2  1  2

फ़ंक्शन के अंदर एक श्रृंखला को वापस करने का परिणाम result_type='expand' समान है। परिणामी कॉलम नाम श्रृंखला सूचकांक होंगे।

>>> df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)
   foo  bar
0    1    2
1    1    2
2    1    2

पासिंग result_type='broadcast' समान आकार के परिणाम को सुनिश्चित करेगा, चाहे सूची-प्रकार या स्केलर फ़ंक्शन द्वारा वापस आ जाए, और इसे अक्ष के साथ प्रसारित करें। परिणामी कॉलम नाम मूल होंगे।

>>> df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
   A  B
0  1  2
1  1  2
2  1  2