2012-10-25 75 views
8

如果我有一個包含相同名稱的列的數據框,有沒有辦法將具有相同名稱的列與某種函數(即sum)組合?合併DataFrame中具有相同名稱的列

例如有:

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 

我怎麼可能崩潰的NY-WEB01列(還有一堆重複列,而不僅僅是NY-WEB01的)總結每一行,其中列名是一樣的?

+0

對,這是[分體式應用-合併](H ttp://pandas.pydata.org/pandas-docs/stable/groupby.html)其中你的聚合函數是sum()。這是一個非常普遍的範例。順便說一句,你是'聚合'的行,而不是'合併'他們。 – smci

+1

另外,在這裏你實際上是結合了行,而不是列。 (您基於具有相同值(不是'name')的某些列組合行))。您可能想要更正您的標題。 – smci

回答

12

我相信這樣做,你所追求的:

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

另外,3%和15%之間的速度取決於DF的長度:

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

編輯:爲了擴大這種超越和,使用.agg()(簡稱.aggregate()):

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

謝謝!一直在尋找這樣的東西。 –

相關問題