Python 通过获取组计数的最大值来分配列值

Python 通过获取组计数的最大值来分配列值,python,pandas,group-by,max,Python,Pandas,Group By,Max,我有以下数据帧 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

我有以下数据帧

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 Type”列N,然后分配到每个组的“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
我知道在一组中获得最大值。实现上述目标的任何帮助都将是巨大的帮助。

  • df.groupby('Year').Count.idxmax()
    为我提供了一系列方便的最大行数出现的位置
  • 我可以将
    map
    与dict-like系列
    vt
    一起使用,以获得指数中的一系列年份和车辆类型值
  • 然后用它来映射
    yr
    系列,以获得我们想要的列
  • 使用
    assign
    创建新列


谢谢你的回复。有没有办法使用groupby函数来实现这一点?@ceeka9388解决方案中有一个groupby。对不起,我的错。再次感谢。快速提问…当我尝试按df.assign(Max_Fleet=yr.map(df.groupby(['Year','Sector','Number'])['Count'].idxmax().map(vt)))等多个列分组时…我在Max_Veh_类型列中得到了Nan…我在这里犯了什么错误吗?下面的解决方案适用于单个列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