Python 3.x 按天复制数据帧groupby,并查找在固定时间超过该值的第一个值

Python 3.x 按天复制数据帧groupby,并查找在固定时间超过该值的第一个值,python-3.x,pandas,Python 3.x,Pandas,我有一个datetime索引数据框,包含几年的日内数据,增量为2分钟。我想按天分组,包括每天06:30:00超过价格的第一行 df: Price 2009-10-12 06:30:00 904 2009-10-12 06:32:00 904 2009-10-12 06:34:00 904.5 2009-10-12 06:36:00 905 2009-10-12 06:38:00 905.5 20

我有一个datetime索引数据框,包含几年的日内数据,增量为2分钟。我想按天分组,包括每天06:30:00超过价格的第一行

df:

                         Price
2009-10-12 06:30:00      904
2009-10-12 06:32:00      904
2009-10-12 06:34:00      904.5
2009-10-12 06:36:00      905
2009-10-12 06:38:00      905.5
2009-10-13 06:30:00      901
2009-10-13 06:32:00      901
2009-10-13 06:34:00      901
2009-10-13 06:36:00      902
2009-10-13 06:38:00      903
我已尝试使用.groupby和.apply与lambda函数一起按天分组,并包括在06:30:00时超过该值的所有行,但出现错误

onh = pd.to_datetime('6:30:00').time()
onhBreak = df.groupby(df.index.date).apply(lambda x: x[x > x.loc[onh]])
期望输出:

                    Price
2009-10-12 06:34:00 904.5 
2009-10-13 06:36:00 902
*如果这些行是groupby中的值,那也很好


非常感谢您的帮助。

这里我们需要
groupby
idxmax

df = df.to_frame('value')
df['check'] = df.index.time>onh
subdf = df.loc[df.groupby(df.index.date)['check'].idxmax()]
Out[237]: 
                      value  check
2009-10-12 00:00:00   900.0  False
2020-05-29 13:08:00  3052.0   True
subdf = subdf[subdf['check']]
我们可以做到:

mask_date = df['Date'].dt.time.gt(pd.to_datetime('06:30:00').time())
df_filtered = df.loc[mask_date.groupby(df['Date'].dt.date).idxmax()]
print(df_filtered)
输出

                 Date  Value
1 2009-10-12 06:32:00  904.0
6 2009-10-13 06:32:00  901.0

我提供了一个错误的示例数据集,对此表示抱歉。我已将问题中的数据集更改为更好的示例。让我重新表述这个问题:给定数据集,我想按天分组,并返回每天值超过06:30:00值的第一行立即检查:)注意,您可以使用
.ge()
而不是
gt()
如果您想包括“06:30”时间日期,可能我的问题也不清楚。我已经更新了问题,请重新阅读。我对超过6:30的价格感兴趣。数据将在6:30开始,因此我们不必筛选6:30之后的时间。我提供了一个错误的示例数据集,对此表示抱歉。我已将问题中的数据集更改为更好的示例。让我重新表述一下这个问题:给定数据集,我希望按天分组并返回每天值超过06:30:00时的值的第一行–您能提供预期输出吗?返回下面的行(即每天值超过06:30:00时的值的第一行)就足够了。我不确定.groupby输出会是什么样子。可能是每天的第一个时间戳作为组名,下面的行作为组值2009-10-12 06:34:00 904.5 2009-10-13 06:36:00 902 `
                 Date  Value
1 2009-10-12 06:32:00  904.0
6 2009-10-13 06:32:00  901.0