2015-11-23 76 views
0

我正在嘗試迭代組(由Pandas中的group.by生成)以便應用函數(在MatPlotLib中創建圖表)並獲取DataFrame中每個組的結果。我認爲做這樣的事情,但我知道有一個更好的/功能性的方式:如何迭代組

import pandas as pd 
DF = pd.DataFrame({'COL1': ['A', 'A','B','B'], 
        'COL2' : [1,1,2,2], 
        'COL3' : [2,3,4,5]}) 


unique_list = set(df['COL1']) 
for group in unique_list: 
    if group == df['COL1']: 
     <apply function to df['COL3'] 
     one group at a time, 
     starting with df['COL1'] == 'A'> 
+0

請編輯您的代碼正確 –

回答

1

的GROUPBY函數的結果是大熊貓的數據幀或系列。你可以使用apply函數。見下面的例子:

groupedDF = DF.groupby(['COL1']).sum() 

#Let's assume we want apply below function 
def square(x): 
    return x['COL2']*x['COL2'] 

#Below line will return the results with applied function 
groupedDF.apply(square,axis=1) 

#Let's assume Returned value is series 
groupedSeries = DF.groupby(['COL1'])['COL2'].sum() 

#Let's assume we want apply below function 
def square(x): 
    return x*x 

#Below line will return the result 
groupedSeries.apply(square) 
+0

沙赫拉姆,感謝您的回覆。我想我應該澄清;我想一次選擇一個組(也許通過groupby)並使用該組行來生成一個函數,該函數爲該組行生成圖表。例如,如果我有一張有醫院和醫生數據的表格,我會按醫院分組,每次在醫院中創建一張圖表。該函數是我在Matplotlib中創建的函數。 –

+0

你也許可以使用iteritems()方法...例如在上面的代碼中爲itemped中的itempedFilter(): 打印項目將返回每一行... – Shahram