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

时间:2020-07-02 10:46:59

标签: python pandas pandas-datareader

我知道我是否可以对带有特殊键的对象进行分组,以呈现数据。但是我有一些像这样的数据作为索引

这是索引

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

整个桌子是

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

最终,我将在一个月内获得最高价值。 我在玩

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

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

我的目标是使每个月都有最大价值。我有10年的欧元/美元价值对每天的汇率数据。分组将意味着最终我将具有2000年1月的最大值,2000年2月的最大值...,2019年12月的最大值。

.groupby(usdEuro.index.month).max()仅给出12个值,我希望每个单独的年份有12个值。

1 个答案:

答案 0 :(得分:1)

使用DataFrameGroupBy.idxmax将月份从月份转换为月份,并按DataFrame.loc选择行:

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

或者,如果可能,使用Grouper

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