我有一个包含每日 OHLCV 数据的 DataFrame。
我可以计算范围:
s['Range'] = s['High'] - s['Low']
简单的。现在我想计算一个我称之为s['OIR']
(OIR = Open-In-Range)的新列
该['OIR']
列检查我们是否在区间内开盘,它通过测试我们是否开盘高于昨天的低点和低于昨天的高点来做到这一点。我需要参考前面的行,但我不太确定该怎么做。返回值将是真/假。
谢谢。
编辑:我是 StackExchange 和 Python 的新手。不确定在哪里放置样本数据。这是数据框的图像。
http://i47.tinypic.com/142eb2a.png
示例数据:字典转换为 DataFrame
{'High': {<Timestamp: 2007-03-02 00:00:00>: 1384.5,
<Timestamp: 2007-03-05 00:00:00>: 1373.0},
'Last': {<Timestamp: 2007-03-02 00:00:00>: 1365.0,
<Timestamp: 2007-03-05 00:00:00>: 1351.5},
'Low': {<Timestamp: 2007-03-02 00:00:00>: 1364.25,
<Timestamp: 2007-03-05 00:00:00>: 1350.5},
'OIR': {<Timestamp: 2007-03-02 00:00:00>: False,
<Timestamp: 2007-03-05 00:00:00>: False},
'Open': {<Timestamp: 2007-03-02 00:00:00>: 1378.5,
<Timestamp: 2007-03-05 00:00:00>: 1356.75},
'Range': {<Timestamp: 2007-03-02 00:00:00>: 20.25,
<Timestamp: 2007-03-05 00:00:00>: 22.5},
'Volume': {<Timestamp: 2007-03-02 00:00:00>: 1706906,
<Timestamp: 2007-03-05 00:00:00>: 1984041}}
回答:
s['OIR'] = ((s['Open'] < s['High'].shift(1)) & (s['Open'] > s['Low'].shift(1)))