使用 Pandas 和 .shift 查询带条件的 .csv 文件

Querying a .csv file with conditions using Pandas and .shift

我在查询带有条件的贸易数据的简单 .csv 文件时遇到问题。 .csv 文件有 5 列 - [open, high, low, close, volume] 带有 时间序列索引,逐分钟交易 .

我想做的是构建一个脚本

(1) tells me how many times the close price minus the open price of the previous minute is positive.

(2) the volume of the previous minute is greater than that of the minute before it.

到目前为止,我的上半场 (1) 成绩为:

ts2 = ts[(ts["close"]-ts["open"].shift(1))>0]

但是,我无法将它与我需要的音量条件 (2) 结合起来。我尝试了以下操作,均导致语法错误和其他错误。

ts2 = ts[(ts["close"]-ts["open"].shift(1))>0]
ts3 = ts[(ts["volume"].shift(1)-ts["volume"].shift(2))>0]
ts4 = ts[ts2 & ts3]

ts4 = ts[(ts["close"]-ts["open"].shift(1)>0) & (ts["volume"].shift(1)-ts["volume"].shift(2)>0)

最终我会使用:

print(len(ts4)) 

查找条件查询的 csv 文件中出现的次数。

请告诉我如何结合这两个条件,以及是否有改进我当前方法的方法。

谢谢,非常感谢所有帮助!

你快到了。只需制作 ts2ts3 掩码而不是实际查询的数据帧。

ts2 = (ts["close"] - ts["open"].shift(1)) > 0  #this is a mask
ts3 = (ts["volume"].shift(1) - ts["volume"].shift(2)) > 0 #this is a mask
ts4 = ts.loc[ts2 & ts3] #query using 2 masks

希望对您有所帮助。