首页 > 解决方案 > 如何计算时间序列的最大天数以及相关小时数?

问题描述

我有一个数据框,里面有一些时间序列。它有 3 列:日、小时和值:

小时 价值
1月12日 11-00 14
1月12日 12-00 100
1月12日 13-00 345
1月12日 14-00 195
1月13日 12-00 76
1月13日 13-00 221
1月13日 14-00 102
1月13日 15-00 395

如您所见,在 13-00 观察到 1 月 12 日的最大值。

我想计算每个“天”的“价值”的最大值。我可以通过简单的方式做到这一点

df.groupby("day")["value"].max()

它有效,但显然在分组后我们删除了小时信息。问题是:我如何构建包含日期最大值以及观察到该值的小时的数据帧,即

观察到 maxValue 的小时 最大值
1月12日 13-00 345
1月13日 15-00 395

?

标签: pythonpandastime-series

解决方案


编辑

我创建了您的示例df

         day   hour  value
0 2021-01-12  11-00     14
1 2021-01-12  12-00    100
2 2021-01-12  13-00    345
3 2021-01-12  14-00    195
4 2021-01-13  12-00     76
5 2021-01-13  13-00    221
6 2021-01-13  14-00    102
7 2021-01-13  15-00    395

并在其上运行此代码:

res = pd.merge(df.groupby('day').agg({'value':'max'},as_index=False).add_prefix('max_'),df,how='left',left_on='max_value',right_on='value')

回来了:

   max_value        day   hour  value
0        345 2021-01-12  13-00    345
1        395 2021-01-13  15-00    395

推荐阅读