Python 为数据框的单独列(特定列范围)的最大值选择相应的列值 年-月数量 日新月异 2005-01 2005年1月49550 2005-02 2005年2月96088 2005-03 2005年3月28874日 2005-04 2005年4月66917日 2005-05 2005年5月24日70 ... ... ... ... 2018-08 2018年8月132629日 2018-09 2018年9月104394日 2018-10 2018年10月12日305 2018-11 2018年11月12日049 2018-12 2018年2014年12月17日

Python 为数据框的单独列(特定列范围)的最大值选择相应的列值 年-月数量 日新月异 2005-01 2005年1月49550 2005-02 2005年2月96088 2005-03 2005年3月28874日 2005-04 2005年4月66917日 2005-05 2005年5月24日70 ... ... ... ... 2018-08 2018年8月132629日 2018-09 2018年9月104394日 2018-10 2018年10月12日305 2018-11 2018年11月12日049 2018-12 2018年2014年12月17日,python,pandas,Python,Pandas,这是我的数据框。我想选择每年的最大数量,并返回相应的月份 到目前为止我已经试过了 df.groupby('year').max() 但在这里,我得到了每一列的最大值,因此得到了每年的9月份。 我不知道如何找到实际的解决方案。我想您需要idxmax: df.loc[df.groupby('year')['quantity'].idxmax()] 输出: year month quantity DateNew 200

这是我的数据框。我想选择每年的最大数量,并返回相应的月份

到目前为止我已经试过了

df.groupby('year').max()
但在这里,我得到了每一列的最大值,因此得到了每年的9月份。
我不知道如何找到实际的解决方案。

我想您需要
idxmax

df.loc[df.groupby('year')['quantity'].idxmax()]
输出:

         year     month  quantity
DateNew                          
2005-02  2005  February     96088
2018-12  2018  December    174984
DateNew
2005-02    February
2018-12    December
Name: month, dtype: object
或者仅仅几个月:

df.loc[df.groupby('year')['quantity'].idxmax(), 'month']
输出:

         year     month  quantity
DateNew                          
2005-02  2005  February     96088
2018-12  2018  December    174984
DateNew
2005-02    February
2018-12    December
Name: month, dtype: object
此外,您还可以使用
排序\u值
,后跟
重复的

df.loc[~df.sort_values('quantity').duplicated('year', keep='last'), 'month']

df.groupby('year').idxmax()
?是的,工作正常,谢谢!我是否需要为idxmax导入一些东西,因为对于前两个,我得到了“ValueError:cannot推断”最后一个的类型worked@KunalGoel不,这是一个函数,不需要任何特殊的东西。不知道为什么会发生在你身上。