gpt4 book ai didi

Python Pandas - 查找具有最大聚合值的连续组

转载 作者:太空狗 更新时间:2023-10-30 00:29:12 26 4
gpt4 key购买 nike

我有一个包含日期时间和整数的数据框

import numpy as np
import pandas as pd

df = pd.DataFrame()
df['dt'] = pd.date_range("2017-01-01 12:00", "2017-01-01 12:30", freq="1min")
df['val'] = np.random.choice(xrange(1, 100), df.shape[0])

给我

                    dt  val
0 2017-01-01 12:00:00 33
1 2017-01-01 12:01:00 42
2 2017-01-01 12:02:00 44
3 2017-01-01 12:03:00 6
4 2017-01-01 12:04:00 70
5 2017-01-01 12:05:00 94*
6 2017-01-01 12:06:00 42*
7 2017-01-01 12:07:00 97*
8 2017-01-01 12:08:00 12
9 2017-01-01 12:09:00 11
10 2017-01-01 12:10:00 66
11 2017-01-01 12:11:00 71
12 2017-01-01 12:12:00 25
13 2017-01-01 12:13:00 23
14 2017-01-01 12:14:00 39
15 2017-01-01 12:15:00 25

我如何找到 N 分钟的 consecutive dt 组给我 val 的最大总和?

在这种情况下,如果N=3,那么结果应该是:

                    dt  val
5 2017-01-01 12:05:00 94
6 2017-01-01 12:06:00 42
7 2017-01-01 12:07:00 97

(上面标有星号)

最佳答案

你可以使用 np.convolve获得正确的起始索引并从那里开始。

def cons_max(df, N):
max_loc = np.convolve(df.val, np.ones(N, dtype=int), mode='valid').argmax()
return df.loc[max_loc:max_loc+N-1]

演示

>>> cons_max(df, 3)
dt val
5 2017-01-01 12:05:00 94
6 2017-01-01 12:06:00 42
7 2017-01-01 12:07:00 97

>>> cons_max(df, 5)
dt val
4 2017-01-01 12:04:00 70
5 2017-01-01 12:05:00 94
6 2017-01-01 12:06:00 42
7 2017-01-01 12:07:00 97
8 2017-01-01 12:08:00 12

它的工作原理是有效地将内核(1 的数组)“滑动”到我们的输入中,并将大小为 N 的窗口中的元素乘法累加在一起。

关于Python Pandas - 查找具有最大聚合值的连续组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com