डॉक्स कैसे कुंजी के रूप में उत्पादन स्तंभ नाम के साथ एक dict का उपयोग कर एक समय में एक GroupBy वस्तु पर कई कार्यों को लागू करने के दिखाने:
In [563]: grouped['D'].agg({'result1' : np.sum,
.....: 'result2' : np.mean})
.....:
Out[563]:
result2 result1
A
bar -0.579846 -1.739537
foo -0.280588 -1.402938
हालांकि, यह केवल एक श्रृंखला समूह वस्तु पर काम करता है। और जब एक तानाशाह को समान रूप से एक Groupby DataFrame में पारित किया जाता है, तो यह अपेक्षा करता है कि कॉलम उन नामों के लिए होगा जिन्हें फ़ंक्शन पर लागू किया जाएगा।
मैं जो करना चाहता हूं वह कई कॉलमों के लिए कई फ़ंक्शन लागू करता है (लेकिन कुछ कॉलम कई बार संचालित होंगे)। साथ ही, कुछ फ़ंक्शन ग्रुपबी ऑब्जेक्ट में अन्य कॉलम पर निर्भर होंगे (जैसे कि समिफ़ फ़ंक्शंस)। मेरा वर्तमान समाधान स्तंभ द्वारा स्तंभ पर जाना है, और ऊपर दिए गए कोड की तरह कुछ करना, अन्य पंक्तियों पर निर्भर करने वाले कार्यों के लिए लंबोदा का उपयोग करना। लेकिन इसमें एक लंबा समय लग रहा है, (मुझे लगता है कि एक समूह वस्तु के माध्यम से पुनरावृत्त होने में लंबा समय लगता है)। मुझे इसे बदलना होगा ताकि मैं एक ही रन में पूरे ग्रुपबी ऑब्जेक्ट के माध्यम से पुनरावृत्त कर दूं, लेकिन मैं सोच रहा हूं कि क्या यह कुछ साफ तरीके से करने के लिए पांडा में एक तरह से बनाया गया है।
उदाहरण के लिए, मैंने कुछ ऐसा करने की कोशिश की है
grouped.agg({'C_sum' : lambda x: x['C'].sum(),
'C_std': lambda x: x['C'].std(),
'D_sum' : lambda x: x['D'].sum()},
'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), ...)
लेकिन जैसा कि मुझे उम्मीद थी कि मुझे KeyError मिलती है (चूँकि agg
DataFrame से चाबियों को एक कॉलम कहा जाता है)।
क्या कोई ऐसा तरीका है जो मैं करना चाहता हूं, या एक संभावना है कि इस कार्यक्षमता को जोड़ा जा सकता है, या क्या मुझे केवल ग्रुपबी के माध्यम से मैन्युअल रूप से पुनरावृति करने की आवश्यकता होगी?
धन्यवाद