Pandas三重条件查询:指定时间区间取最大交易量对应最低价格
解决方案
你需要先将datetime字段转换为pandas可识别的时间类型,再做时间区间筛选,最后在筛选结果上执行你原来的计算逻辑即可,完整实现如下:
如果你的datetime列已经是datetime类型,可跳过类型转换步骤:
import pandas as pd # 转换时间列类型 df['datetime'] = pd.to_datetime(df['datetime']) # 定义时间区间边界 start = pd.to_datetime('2021-09-29 04:15:00-04:00') end = pd.to_datetime('2021-09-29 06:35:00-04:00')
两种常用实现写法:
- 链式写法(代码更简洁)
res = df[df['datetime'].between(start, end)].query('volume == volume.max()')['price'].min()
- 分步写法(逻辑更清晰,便于调试)
# 先筛选符合时间区间的记录 filtered_df = df[df['datetime'].between(start, end)] # 再取最大交易量对应的最低价格 res = filtered_df[filtered_df['volume'] == filtered_df['volume'].max()]['price'].min()
运行后得到的res值就是预期的2:时间筛选后会排除掉04:00和07:00的两条不符合时间要求的记录,剩余记录中最大交易量为900,对应的价格分别是2、5、22,最小值就是2。
内容的提问来源于stack exchange,提问作者GinSnipe
相关产品推荐
相关产品推荐

