我有一个文件,我从互联网上下载了tick数据。看起来像这样。该文件相对“大”
time,bid,bid_depth,bid_depth_total,offer,offer_depth,offer_depth_total
20150423T014501,81.79,400,400,81.89,100,100
20150423T100001,81.,100,100,84.36,100,100
20150423T100017,81.,100,100,83.52,500,500
20150423T115258,81.01,500,500,83.52,500,500
...
然后我想重新索引数据,以便我可以通过时间类型查询访问它:
from pylab import *
from pandas import *
import pandas.io.date_converters as conv
XLE = read_csv('XLE.csv') # Chunking seems somewhat kludy XLE = pd.read_csv('XLE.csv', chunksize=4)
#preferred something like XLE = pd.read_csv('XLE.csv', index_col=0, parse_dates=True) but can't handle this time format?
XLE = XLE.drop_duplicates(cols='time')
for i in XLE.index :
XLE [ 'time' ][ i ]= datetime.strptime ( XLE [ 'time' ][ i], '%Y%m%dT%H%M%S')
XLE.index = XLE [ ' time ' ]; del XLE [ 'time']
print XLE[['bid','offer']].ix[1000:1015].to_string() # this is the goal, to be able to manipulate the data through a time index.
我的问题是:
答案 0 :(得分:1)
我有点懒得知道到底发生了什么,但这会非常慢,因为你明确地循环而不是使用矢量化方法中构建的pandas。 (基本上避免使用大熊猫,如果可能的话,通常可以使用大熊猫。)
for i in XLE.index :
XLE [ 'time' ][ i ]= datetime.strptime ( XLE [ 'time' ][ i], '%Y%m%dT%H%M%S')
XLE.index = XLE [ ' time ' ]; del XLE [ 'time']
您可以通过以下方式将时间转换为pandas datetime:
XLE['time'] = pd.to_datetime(XLE.time)
我不确定parse_dates
read_csv
为什么date_parser
在那里不适合您,但您也可以使用XLE = XLE.set_index('time')
并指定具体格式。< / p>
然后,如果你想把它作为索引:
[f=1-(1./((1+exp((d-d50)/w))))]
这应该让你开始。一次&#39;时间&#39;是一个熊猫日期时间你可以做各种事情(只看文档)。如果事情适合记忆,这些事情应该非常快。如果没有,那么SO上有很多答案可以帮助你,尽管如果可行的话,购买更多内存总是最简单的解决方案。