2015-06-14 116 views
2

我有一個數據幀DF類似如下:大熊貓發現GROUPBY最大值和應用功能

H,Nu,City 
1,15,Madrid 
3,15,Madrid 
3,1600,Madrid 
5,17615,Madrid 
2,55,Dublin 
4,5706,Dublin 
2,68,Dublin 
1,68,Dublin 

我想找到怒江列的最大值/城市。然後找到相應的值H並添加新列df['H2'] = df['H']/max(H/city)。到目前爲止,我嘗試:

d = df.groupby('City').apply(lambda t: t[t.Nu==t.Nu.max()]) 

其正確返回:

  H  Nu City 
City        
Dublin 5 4 5706 Dublin 
Madrid 3 5 17615 Madrid 

我怎麼可以把我的極大值h值(4都柏林和5馬德里)爲常數/城市,以應用在DataFrame中的所有功能?預期DF將顯示爲:使用.idxmax

H,Nu,City,H2 
1,15,Madrid,0.2 
3,15,Madrid,0.6 
3,1600,Madrid,0.6 
5,17615,Madrid,1.0 
2,55,Dublin,0.5 
4,5706,Dublin,1.0 
2,68,Dublin,0.5 
1,68,Dublin,0.25 

回答

4

,你可能獲得該行都有每一City最高Nu值:

>>> i = df.groupby('City')['Nu'].transform('idxmax').values 
>>> df['H2'] = df['H']/df.loc[i, 'H'].values 
>>> df 
    H  Nu City H2 
0 1  15 Madrid 0.20 
1 3  15 Madrid 0.60 
2 3 1600 Madrid 0.60 
3 5 17615 Madrid 1.00 
4 2  55 Dublin 0.50 
5 4 5706 Dublin 1.00 
6 2  68 Dublin 0.50 
7 1  68 Dublin 0.25 
+0

尼斯。 IIUC,最初的問題有一個問題,當最大的一個關係,不是?它不一定會返回一行。 –

+0

謝謝完美! –

+0

@AmiTavory這是真的,在這種情況下,idxmax返回較小的索引 –