2017-06-03 101 views
1

我有以下數據框。通過獲取大熊貓組計數的最大值來分配列值

Year Sector Number  Veh Types Month Count 
2015 AA  173   F   Apr  277 
2015 AA  173   F   Aug  277 
2015 AA  173   F   Dec  277 
2015 AA  173   F   Feb  277 
2015 AA  173   F   Jul  277 
2015 AA  173   F   Jun  277 
2015 AA  173   F   Mar  277 
2015 AA  173   G   Feb  82 
2015 AA  173   G   Jan  82 
2015 AA  173   G   Mar  82 
2016 AA  173   A   Apr  277 
2016 AA  173   A   Aug  277 
2016 AA  173   A   Dec  277 
2016 AA  173   A   Feb  277 
2016 AA  173   A   Jul  277 
2016 AA  173   A   Jun  277 
2016 AA  173   A   Mar  277 
2016 AA  173   A   May  277 
2016 AA  173   F   Nov  277 
2016 AA  173   F   Oct  277 
2016 AA  173   F   Sep  277 
2016 AA  173   G   Feb  82 
2016 AA  173   G   Jan  82 
2016 AA  173   G   Mar  82 

我需要得到列的最大值每年數,並得到相應的「輛類型」 Columnn並在各組中的「Max_Veh_Type」列分配。

我的預期成果是:

Year Sector Number  Veh Types Month Count Max_Veh_type  
2015 AA  173   F   Apr  277  F 
2015 AA  173   F   Aug  277  F  
2015 AA  173   F   Dec  277  F 
2015 AA  173   F   Feb  277  F 
2015 AA  173   F   Jul  277  F 
2015 AA  173   F   Jun  277  F 
2015 AA  173   F   Mar  277  F 
2015 AA  173   G   Feb  82  F 
2015 AA  173   G   Jan  82  F 
2015 AA  173   G   Mar  82  F 
2016 AA  173   A   Apr  277  A 
2016 AA  173   A   Aug  277  A 
2016 AA  173   A   Dec  277  A  
2016 AA  173   A   Feb  277  A 
2016 AA  173   A   Jul  277  A 
2016 AA  173   A   Jun  277  A 
2016 AA  173   A   Mar  277  A 
2016 AA  173   A   May  277  A 
2016 AA  173   F   Nov  277  A 
2016 AA  173   F   Oct  277  A 
2016 AA  173   F   Sep  277  A 
2016 AA  173   G   Feb  82  A 
2016 AA  173   G   Jan  82  A 
2016 AA  173   G   Mar  82  A 

我知道一組中獲得最大的價值。任何幫助實現上述將是很大的幫助。

+0

以下解決方案適用於單個列GROUPBY。如果我需要groupby multiplle列並獲取結果,我該怎麼辦?需要幫助。 – ceeka9388

回答

2
  • df.groupby('Year').Count.idxmax()讓我一個方便的系列賽裏的最大行發生
  • 我可以爲了得到一系列的年中值指數和VEH類型在此使用map與像系列vt的字典。
  • 然後用這個地圖上的yr系列,以獲得列,我們希望
  • 使用assign創建一個新的列

vt, yr = df['Veh Types'], df['Year'] 
df.assign(Max_Veh_Type=yr.map(df.groupby('Year').Count.idxmax().map(vt))) 

    Year Sector Number Veh Types Month Count Max_Veh_Type 
0 2015  AA  173   F Apr 277   F 
1 2015  AA  173   F Aug 277   F 
2 2015  AA  173   F Dec 277   F 
3 2015  AA  173   F Feb 277   F 
4 2015  AA  173   F Jul 277   F 
5 2015  AA  173   F Jun 277   F 
6 2015  AA  173   F Mar 277   F 
7 2015  AA  173   G Feb  82   F 
8 2015  AA  173   G Jan  82   F 
9 2015  AA  173   G Mar  82   F 
10 2016  AA  173   A Apr 277   A 
11 2016  AA  173   A Aug 277   A 
12 2016  AA  173   A Dec 277   A 
13 2016  AA  173   A Feb 277   A 
14 2016  AA  173   A Jul 277   A 
15 2016  AA  173   A Jun 277   A 
16 2016  AA  173   A Mar 277   A 
17 2016  AA  173   A May 277   A 
18 2016  AA  173   F Nov 277   A 
19 2016  AA  173   F Oct 277   A 
20 2016  AA  173   F Sep 277   A 
21 2016  AA  173   G Feb  82   A 
22 2016  AA  173   G Jan  82   A 
23 2016  AA  173   G Mar  82   A 
+0

感謝您的回覆。有沒有辦法使用groupby函數來做到這一點? – ceeka9388

+0

@ ceeka9388在解決方案中有一個groupby。 – piRSquared

+0

對不起我的壞。再次感謝。 – ceeka9388