2012-10-25 22 views
8

है यदि मेरे पास डेटाफ्रेम है जिसमें कॉलम हैं, जिनमें समान नाम शामिल है, तो ऐसे कॉलम को गठबंधन करने का कोई तरीका है जिनके नाम किसी प्रकार के फ़ंक्शन (यानी योग) के साथ समान नाम हैं?एक डेटाफ्रेम के भीतर कॉलम मर्ज करें जिसमें समान नाम

साथ

उदाहरण के लिए:

In [186]: 

df["NY-WEB01"].head() 
Out[186]: 
NY-WEB01 NY-WEB01 
DateTime   
2012-10-18 16:00:00 5.6  2.8 
2012-10-18 17:00:00 18.6 12.0 
2012-10-18 18:00:00 18.4 12.0 
2012-10-18 19:00:00 18.2 12.0 
2012-10-18 20:00:00 19.2 12.0 

मैं न्यूयॉर्क WEB01 कॉलम प्रत्येक पंक्ति संक्षेप जहां स्तंभ नाम एक ही है द्वारा (डुप्लिकेट कॉलम ही नहीं, एनवाई WEB01 का एक समूह देखते हैं) कैसे पतन हो सकता है ?

+0

हाँ, यह [स्प्लिट-लागू-कम्बाइन] (ज है ttp: //pandas.pydata.org/pandas-docs/stable/groupby.html) जहां आपका समेकित फ़ंक्शन 'sum()' है। यह एक बहुत ही आम प्रतिमान है। बीटीडब्ल्यू, आप पंक्तियों को 'एकत्रित' कर रहे हैं, उन्हें 'विलय' नहीं कर रहे हैं। – smci

+1

इसके अलावा, यहां आप वास्तव में पंक्तियों को जोड़ रहे हैं, कॉलम नहीं। (आप पंक्तियों को एक ही मान वाले कुछ कॉलम के आधार पर जोड़ रहे हैं ('नाम' नहीं))। आप अपना शीर्षक सही करना चाहेंगे। – smci

उत्तर

12

मेरा मानना ​​है कि यह करता है कि आप क्या करने के बाद कर रहे हैं:

df.groupby(df.columns, axis=1).sum() 

संपादित करें:

df.groupby(lambda x:x, axis=1).sum() 

वैकल्पिक रूप से, 3% और 15% के बीच तेजी से df की लंबाई के आधार इससे भी आगे विस्तार करने के लिए रकम, .agg() (.aggregate() का संक्षिप्त रूप) का उपयोग करें:

df.groupby(df.columns, axis=1).agg(numpy.max) 
+0

धन्यवाद! थोड़ी देर के लिए इस तरह कुछ खोज रहे थे। –

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