Python新手在这里,但我有一些数据是日内财务数据,可以追溯到2012年,所以它每天都有相同的时间(每天相同的交易时段),但只是不同的日期。我希望能够从数据中选择特定时间并检查该时间段的相应OHLC数据,然后对其进行一些分析。
所以目前它是一个CSV文件,我正在做:
import pandas as pd
data = pd.DataFrame.read_csv('data.csv')
date = data['date']
op = data['open']
high = data['high']
low = data['low']
close = data['close']
volume = data['volume']
问题是日期列的格式为" dd / mm / yyyy 00:00:00"作为一个字符串或其他什么,所以可以在一定时间之间选择,例如" 09:00:00"和" 10:00:00"?或者我是否必须将该时间段与日期分开并将其作为自己的专栏?如果是这样,怎么样?
所以我相信pandas有一个between_time()
函数,但是这似乎需要一个DataFrame,所以如何将它转换为DataFrame,然后我应该可以使用between_time函数来选择我的时间之间想。也因为那里显然有数千天,都有他们自己的" xx:xx:xx" to" xx:xx:xx"我想拉出我想要从每天看的同一时间段,而不仅仅是第一批" xx:xx:xx" to" xx:xx:xx"因为它可以降低数据,如果这样做有意义的话。谢谢!!
答案 0 :(得分:2)
考虑数据框df
from pandas_datareader import data
df = data.get_data_yahoo('AAPL', start='2016-08-01', end='2016-08-03')
df = df.asfreq('H').ffill()
选项1
将index
转换为系列,然后转换为dt.hour.isin
slc = df.index.to_series().dt.hour.isin([9, 10])
df.loc[slc]
选项2
numpy
广播
slc = (df.index.hour[:, None] == [9, 10]).any(1)
df.loc[slc]
对评论的回复
要在每天的时段内获得一个范围,请使用resample
+ agg
+ np.ptp
(峰值到峰值)
df.loc[slc].resample('D').agg(np.ptp)