2017-06-03 12 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 

私は毎年の列カウントの最大値を取得し、対応する「VEHタイプ」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

を作成するために使用assign

  • をしたい列を取得するためにyrシリーズにマッピングするためにこれを使用します。列を乗算して結果をフェッチする必要がある場合はどうすればよいですか。ヘルプが必要です。 – ceeka9388

  • 答えて

    2
    • df.groupby('Year').Count.idxmax()は私に私が値のインデックスとVEHタイプで年間のシリーズを得るために、一連vtのような辞書でこれにmapを使用することができ、最大行が
    • を発生場所の便利なシリーズを取得します。
    • その後、我々は、以下のソリューションは、単一の列GROUPBYのために働く新しい列

    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

    関連する問題