我最近刚刚发现了大熊猫和蟒蛇。我已经通过Wes'本书,加上我在SO上反复搜索大熊猫标记的问题,以收集这个问题的答案。所以我试过......不幸的是,我微薄的编程智能正在闪耀;)
以下是我要做的事情:
我有Intraday FX数据(每小时),我试图做一些非常简单的分析。我希望测试价格测试每日开放水平的频率,并拒绝或通过它。
这对我来说似乎很简单......我只是迷失了将所有组件组合在一起以获得最终的完整解决方案。
在psuedocode中,这是我想要实现的目标:
如果有人能指出我正确的方向,我真的很感激。我正处于放弃这一点的地步。我觉得答案应该很简单,但我现在迷失了
以下是我一直在使用的数据:
data = pd.read_csv('data/GBPUSD60.csv',
names=['Date','Time','Open','High','Low','Close','Volume'],
parse_dates={'Timestamp': ['Date', 'Time']},
index_col=['Timestamp'])
# Get rid of the volume
del data['Volume']
结果DF:
Open High Low Close
Timestamp
2012-11-14 04:00:00 1.58766 1.58890 1.58749 1.58877
2012-11-14 05:00:00 1.58874 1.58887 1.58819 1.58849
2012-11-14 06:00:00 1.58849 1.58921 1.58831 1.58890
2012-11-14 07:00:00 1.58890 1.58895 1.58811 1.58876
2012-11-14 08:00:00 1.58874 1.58934 1.58841 1.58849
我假设我需要采取以下两种方式之一:
任何一种方法的问题都是我在尝试访问我需要的字段时会遇到各种麻烦。
答案 0 :(得分:1)
您的伪代码已被发现。这是语义
第1步:制作日期栏
df['date'] = [i.date() for i in df.index]
第2步:每天开放(假设开盘价是当天第一支蜡烛的开盘价)
df['dailyOpen'] = df.groupby('date').open.transform(lambda s: s[0])
第3步:比较
df['flag'] = (df.low < df.dailyOpen) & (df.close > df.dailyOpen)
如果你想要一天中发生上述次数,这应该可行
res = df.groupby('date').flag.sum()