2015-01-30 3 views
25

मान लीजिए मैं बहुत की तरह एक स्तंभ है:मैं कॉलम में मान कैसे जोड़ूं जो पांडा का उपयोग करके दी गई स्थिति से मेल खाते हैं?

a b 
1 5 
1 7 
2 3 
1 3 
2 5 

मैं, b जहां a = 1 के लिए मान योग करने के लिए उदाहरण के लिए चाहते हैं। यह मुझे 5 + 7 + 3 = 15 देगा।

मैं इसे पांडा में कैसे कर सकता हूं?

+2

इस कार्य को करने के लिए पांडा में फ़ंक्शन द्वारा समूह का उपयोग करें –

उत्तर

27

इस तरह के कार्य के लिए बूलियन इंडेक्सिंग का उपयोग करना काफी आम है। इस विधि के साथ, आप यह पता लगाते हैं कि कॉलम a1 के बराबर है और फिर b कॉलम की संबंधित पंक्तियों को जोड़ता है। आप अनुक्रमण संभाल करने loc उपयोग कर सकते हैं:

>>> df.loc[df['a'] == 1, 'b'].sum() 
15 

वैकल्पिक दृष्टिकोण groupby उपयोग करने के लिए स्तंभ a के मान के अनुसार भागों में विभाजित करने के लिए dataframe है। इसके बाद आप प्रत्येक भाग योग और मूल्य है कि 1 की अप करने के लिए जोड़ा बाहर खींच कर सकते हैं:

>>> df.groupby('a')['b'].sum()[1] 
15 

groupby दृष्टिकोण बूलियन अनुक्रमण का उपयोग करने से बहुत धीमी है, लेकिन उपयोगी है आप स्तंभ में अन्य मूल्यों के लिए रकम की जांच करना चाहते हैं a

+0

'.b' भाग क्या है? आप इस तरह के कॉलम कैसे अनुक्रमणित कर रहे हैं? – adijo

+0

आप 'df [' a '] 'या' df.a' लिखकर डेटाफ्रेम के कॉलम 'ए' तक पहुंच सकते हैं। दूसरा एक सुविधाजनक है लेकिन अगर आपके पास "व्यक्तिगत आईडी" जैसे कई शब्द वाले कॉलम नाम हैं या कॉलम का नाम डेटाफ्रेम विधि जैसे "कहां" या "योग" के साथ मेल खाता है, तो अच्छी तरह से काम नहीं करता है। –

+0

ठीक है धन्यवाद, मैं कॉलम में सभी मानों को 'int' में कैसे परिवर्तित करूं जिससे मुझे उन्हें योग करने में सक्षम बनाया जा सके? मैं उन सभी को 'इनट्स' में बदलने के लिए 'मैप' का उपयोग कर रहा था, लेकिन मुझे लगता है कि इसे और अधिक कुशलता से करने के लिए पांडा में एक अंतर्निहित कार्य हो सकता है। – adijo

संबंधित मुद्दे

 संबंधित मुद्दे