首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按年份查找最大值,并以日期为索引,在Pandas中找到最大值所在的返回日期

按年份查找最大值,并以日期为索引,在Pandas中找到最大值所在的返回日期
EN

Stack Overflow用户
提问于 2021-11-24 15:35:01
回答 1查看 767关注 0票数 0

我有这个数据

代码语言:javascript
运行
复制
date,AA
1980-01-01, 77.7
1980-01-02, 86
1980-01-03, 92.3
1980-01-04, 96.4
1980-01-05, 85.7
1980-01-06, 75.7
1980-01-07, 86.8
1980-01-08, 93.2
1985-08-13, 224.6
1985-08-14, 213.9
1985-08-15, 205.7
1985-08-16, 207.3
1985-08-17, 202.1

我想计算每年的最大值和发生的日期。我之所以挣扎,是因为我想把日期作为指数。

实际上,我将其解读为:

代码语言:javascript
运行
复制
dfr    = pd.read_csv(fnamed, sep=',', header = 0, index_col=0, parse_dates=True)

我知道我可以重拍

代码语言:javascript
运行
复制
dfr_D = dfr.resample('Y').max()

但是在这种情况下,我将失去关于一年内最大值位置的信息。

我发现了这个:

代码语言:javascript
运行
复制
idx = dfr.groupby(lambda x: dfr['date'][x].year)["A"].idxmax()

然而,dfr' date‘似乎是列的名称,而在我的例子中,日期在索引中,并且'.year’不是它的属性之一。

我有一种感觉,我应该和"groupby“和"indexmax”合作。然而,我所有的出席,他们都失败了。

提前感谢

EN

Stack Overflow用户

回答已采纳

发布于 2021-11-24 15:44:17

假设"date“是datetime类型和一列,您可以使用以下方法对数据进行切片,使每个组的数据达到最大值:

代码语言:javascript
运行
复制
df.loc[df.groupby(df['date'].dt.year)['AA'].idxmax().values]

产出:

代码语言:javascript
运行
复制
        date     AA
3 1980-01-04   96.4
8 1985-08-13  224.6

如果“日期”是索引:

代码语言:javascript
运行
复制
df.loc[df.groupby(df.index.year)['AA'].idxmax().values]

产出:

代码语言:javascript
运行
复制
               AA
date             
1980-01-04   96.4
1985-08-13  224.6
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70098850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档