为熊猫数据帧的单独列(从特定列范围中)的最大值选择相应的列值


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']

相关内容

最新更新