首页 > 解决方案 > 获取pandas df中所有时期的最大值和最大值出现的时间

问题描述

我有一个看起来像这样的熊猫数据框:

    Concentr 1  Concentr 2     Time
 0    25.4        0.48       00:01:00
 1    26.5        0.49       00:02:00
 2    25.2        0.52       00:03:00
 3    23.7        0.49       00:04:00
 4    23.8        0.55       00:05:00
 5    24.6        0.53       00:06:00
 6    26.3        0.57       00:07:00
 7    27.1        0.59       00:08:00
 8    28.8        0.56       00:09:00
 9    23.9        0.54       00:10:00
 10   25.6        0.49       00:11:00
 11   27.5        0.56       00:12:00
 12   26.3        0.55       00:13:00
 13   25.3        0.54       00:14:00

并且我想保持每 5 分钟间隔的 Concentr 1 的最大值,以及它发生的时间和当时 concetr 2 的值。所以,对于前面的例子,我想要:

     Concentr 1    Concentr 2     Time
 0     26.5          0.49       00:02:00
 1     28.8          0.56       00:09:00
 2     27.5          0.56       00:12:00

我目前的方法是 i) 为每个 5 分钟间隔创建一个 ID 的辅助变量,例如 00:00 到 00:05 将是间隔 1,从 00:05 到 00:10 将是间隔 2 等,ii)使用 groupby 中的区间变量来获得每个区间的最大浓度 1,并且 iii)使用区间变量和浓度 1 合并回初始 df,从而确定相应的时间。

我想问是否有更好/更有效/更优雅的方式来做到这一点。

非常感谢您的帮助。

标签: pythonpandaspandas-groupby

解决方案


df = df.set_index('Time')
idx = df.resample('5T').agg({'Concentr 1': np.argmax})
df = df.iloc[idx.conc]

reset_index()如果您不希望Time成为您的索引,那么您可能需要这样做。


推荐阅读