我知道我是否可以对带有特殊键的对象进行分组,以呈现数据。但是我有一些像这样的数据作为索引
这是索引
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个值。
答案 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()]