year month quantity
DateNew
2005-01 2005 January 49550
2005-02 2005 February 96088
2005-03 2005 March 28874
2005-04 2005 April 66917
2005-05 2005 May 24070
... ... ... ...
2018-08 2018 August 132629
2018-09 2018 September 104394
2018-10 2018 October 121305
2018-11 2018 November 121049
2018-12 2018 December 174984
这是我的数据帧。我想选择每年的最大数量,并返回相应的月份。
到目前为止,我已经尝试过这个
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
或者只是几个月:
df.loc[df.groupby('year')['quantity'].idxmax(), 'month']
输出:
DateNew
2005-02 February
2018-12 December
Name: month, dtype: object
此外,您可以使用sort_values
,然后使用duplicated
:
df.loc[~df.sort_values('quantity').duplicated('year', keep='last'), 'month']