python - 检查某个值在时间范围内是否超过阈值的最佳方法

标签 python pandas

给定一个来自 csv 的 pandas 数据框,如下所示:

DATE,DESCRIPTION,SELL,BUY:
2014-01-16 15:25:57.817728,"text1",7,10
2014-01-16 15:26:01.445759,"text2",5,8
2014-01-16 15:26:57.856787,"text3",4,10
...

检查“买入”列中的值在给定时间范围内是否低于某个阈值(例如,在 . 分钟 40 和 . 分钟 50 之间)然后返回该行的最好方法是什么数字 ? (仅当发生交叉时,如果值在给定时间之前已经低于特定阈值则不)

最佳答案

假设您的行按时间递增顺序排序,就像您的示例一样(并且“DATE”是数据列而不是索引),那么这是实现您想要的效果的一种方法:

穿越THRESHOLD下方在第 t 行意味着 BUY < threshold在 t 和 BUY >= THRESHOLD在 t-1 时。假设D是你的数据框,这是通过条件实现的:

cond = (D['BUY'] < threshold) & (D['BUY'].shift(1) >= threshold)

获取 START_TIME 之间的所有交叉时间行索引和END_TIME :

d = D[cond]

cross_row_inds = d[(d['DATE'] >= START_TIME) & (d['DATE'] <= END_TIME)].index

您也可以先选择时间,如果DATE,这可能会稍微快一些。是排序的日期时间索引而不是数据列。但是,根据您的语义,您可能需要在 START_TIME 之前包含一个时间实例。

关于python - 检查某个值在时间范围内是否超过阈值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21248159/

相关文章:

python - 如何在左侧和右侧填充每行可变长度的二维数组以形成更大的二维数组

python - 为什么使用 apt.Cache 而不是 apt.cache.Cache() 创建对象

python - dataframe.hist() 具有不同的 bin 大小

python - 如何从 Pandas 字典中删除/xa0?

python - Numpy - 删除具有负值的数据行

python - pycurl登录joomla网站

python - 切片 Pandas Dataframe 时如何返回索引

python - 如何在 df 中保留 dtype ('o' ) 而不是 bool

python - 提取csv文件的多个多边形坐标

python - pandas 查找多行中特定列中的最小值