我有以下时间序列pandas dataframe
index | Date | Time | open | high | low | close | volume
293 2018-06-14 14:55 1832.15 1833.40 1831.90 1833.35 37947
294 2018-06-14 15:00 1833.40 1834.95 1833.30 1834.90 106271
295 2018-06-14 15:05 1834.95 1835.05 1834.40 1834.85 102107
296 2018-06-14 15:10 1834.80 1834.85 1832.95 1833.80 95931
297 2018-06-14 15:15 1833.75 1834.85 1833.05 1834.85 124639
298 2018-06-14 15:20 1834.85 1834.85 1831.55 1832.50 121206
我需要获取索引和行数据,其中Date =' d1'和时间=' t1'
例如。获取data = 2018-06-14和time = 15:05
我需要在t1和t2之间找到max(high),其中date =' d1' (T2> t1)的
例如,在时间15:00到15:15之间找到最大值(高),其中日期=' 2018-06-14'
答案 0 :(得分:1)
获取data = 2018-06-14和time = 15:05
的行值
使用布尔索引:
mask = (df['Date'] == '2018-06-14') & (df['Time'] == '15:05')
values = df[mask]
idx = res.index
最长(高)时间15:00至15:15,其中日期=' 2018-06-14'
使用布尔索引和pd.Series.max
:
mask = df['Time'].between('15:00', '15:15') & (df['Date'] == '2018-06-14')
res = df.loc[mask, 'high'].max()
在这两种解决方案中,您都必须做一些工作以确保您拥有正确的数据格式(例如datetime
/ timedelta
)并相应地调整掩码。关于此主题,有关于SO的许多问题。