如何在 python 中按月对日期进行分组

How to group dates by month in python

我知道如果我的对象具有呈现数据的特殊键,我就可以进行分组。但是我有一些数据作为索引,看起来像这样

这是索引

DatetimeIndex(['2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06',
               '2000-01-07', '2000-01-10', '2000-01-11', '2000-01-12',
               '2000-01-13', '2000-01-14',
               ...
               '2019-12-18', '2019-12-19', '2019-12-20', '2019-12-23',
               '2019-12-24', '2019-12-25', '2019-12-26', '2019-12-27',
               '2019-12-30', '2019-12-31'],
              dtype='datetime64[ns]', name='DATE', length=5217, freq=None)
Index(['DEXUSEU'], dtype='object')

整个table是

        DEXUSEU
    DATE    
    2000-01-03  1.0155
    2000-01-04  1.0309
    2000-01-05  1.0335
...

最终我会得到一个月的最高值。 我在玩

.groupby(pd.Grouper(freq='M')).max()

但是我没有得到想要的结果。

我的目标是每个月都有最大价值。我有 10 年的数据 euro/usd 每天的费率值对。分组意味着最终我将获得 2000 年 1 月的最大值,2000 年 2 月的最大值...,2019 年 12 月的最大值。

.groupby(usdEuro.index.month).max() 只会给出 12 个值,我希望每个年份有 12 个值。

使用DataFrameGroupBy.idxmax with convert years with months to month periods and select rows by DataFrame.loc:

df.loc[df.groupby(df.index.to_period('M'))['DEXUSEU'].idxmax()]

或者如果可能的话使用Grouper:

df.loc[df.groupby(pd.Grouper(freq='M'))['DEXUSEU'].idxmax()]