代码之家  ›  专栏  ›  技术社区  ›  A. Blackmagic

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

  •  1
  • A. Blackmagic  · 技术社区  · 6 年前

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

    我想做的是建立一个脚本

    (1) 告诉我收盘价减去开盘价的多少倍 前一分钟是积极的。

    (2) 前一分钟的音量大于 几分钟前。

    到目前为止,上半场我的表现是:

    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文件中出现的次数。

    谢谢,非常感谢大家的帮助!

    1 回复  |  直到 6 年前
        1
  •  1
  •   gyoza    6 年前

    你就快到了。就这样 ts2 ts3

    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
    

    希望这有帮助。

    推荐文章