pandas 0.23 - GroupBy.apply()

pandas.core.groupby.GroupBy.apply




pandas

pandas.core.groupby.GroupBy.apply

GroupBy.apply(func, *args, **kwargs) [source]

फ़ंक्शन func समूह-वार लागू करें और परिणामों को एक साथ संयोजित करें।

apply करने के apply पारित फ़ंक्शन को पहले तर्क के रूप में एक डेटाफ्रेम लेना चाहिए और एक डेटाफ्रेम, एक श्रृंखला या एक स्केलर वापस करना चाहिए। apply बाद परिणाम को एक साथ एक ही डेटाफ़्रेम या श्रृंखला में संयोजित करने का ध्यान रखेगा। apply इसलिए एक अत्यधिक लचीली समूहीकरण विधि है।

जबकि apply एक बहुत ही लचीली विधि है, इसका नकारात्मक पक्ष यह है कि इसका उपयोग करना अधिक विशिष्ट तरीकों का उपयोग करने की तुलना में थोड़ा धीमा हो सकता है। पंडों ने एक विस्तृत श्रृंखला की विधि प्रदान की है जो उनके विशिष्ट प्रयोजनों के लिए उपयोग apply तुलना में बहुत तेज़ होगी, इसलिए apply करने से पहले उनका उपयोग करने का प्रयास करें।

पैरामीटर:

func : फ़ंक्शन

एक कॉल करने योग्य जो अपने पहले तर्क के रूप में एक डेटाफ्रेम लेता है, और एक डेटाफ्रेम, एक श्रृंखला या एक स्केलर लौटाता है। इसके अलावा कॉल करने योग्य स्थिति और कीवर्ड तर्क ले सकता है

args, kwargs : टपल और तानाशाही

वैकल्पिक स्थिति और कुंजीशब्द तर्क को पास करने के लिए

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

यह भी देखें

pipe
प्रत्येक समूह के बजाय पूर्ण GroupBy ऑब्जेक्ट पर फ़ंक्शन लागू करें।

aggregate , transform

टिप्पणियाँ

वर्तमान कार्यान्वयन में पहले समूह पर दो बार कॉल फंक apply ताकि यह तय हो सके कि यह एक तेज या धीमा कोड पथ ले सकता है। इससे अप्रत्याशित व्यवहार हो सकता है यदि फंक के साइड-इफेक्ट होते हैं, क्योंकि वे पहले समूह के लिए दो बार प्रभावी होंगे।

उदाहरण

>>> df = pd.DataFrame({'A': 'a a b'.split(), 'B': [1,2,3], 'C': [4,6, 5]})
>>> g = df.groupby('A')

ऊपर df से हम देख सकते हैं कि g के दो समूह हैं, a , b । विभिन्न तरीकों से apply , हम अलग-अलग समूहन परिणाम प्राप्त कर सकते हैं:

उदाहरण 1: apply करने के apply पारित फ़ंक्शन के नीचे एक डेटाफ्रेम को अपने तर्क के रूप में लेता है और एक डेटाफ्रेम लौटाता है। apply प्रत्येक समूह के लिए परिणाम को एक नए डेटाफ़्रेम में एक साथ जोड़ता है:

>>> g.apply(lambda x: x / x.sum())
          B    C
0  0.333333  0.4
1  0.666667  0.6
2  1.000000  1.0

उदाहरण 2: apply करने के apply पारित फ़ंक्शन अपने तर्क के रूप में एक डेटाफ्रेम लेता है और एक श्रृंखला देता है। apply प्रत्येक समूह के लिए परिणाम को एक नए डेटाफ़्रेम में एक साथ जोड़ता है:

>>> g.apply(lambda x: x.max() - x.min())
   B  C
A
a  1  2
b  0  0

उदाहरण 3: apply करने के apply पारित फ़ंक्शन अपने तर्क के रूप में एक डेटाफ्रेम लेता है और एक स्केलर देता है। apply प्रत्येक समूह के लिए एक श्रृंखला में एक साथ परिणाम सम्मिलित करता है, जिसमें सूचकांक को उचित रूप से सेट करना शामिल है:

>>> g.apply(lambda x: x.C.max() - x.B.min())
A
a    5
b    2
dtype: int64