【发布时间】:2019-09-11 19:38:16
【问题描述】:
我有一个 csv (sep=' ') 文件,它每天都会更新 1000 行。
YYYY-MM-DD-HH-MM-SS col1 col2 col3 col4 col5
它的行可以追溯到 2015 年。它是按日期时间排序的。 我真的只有今天的数据。
这是我使用的代码:
dprsf = lambda dtstr: datetime.datetime.strptime(dtstr, "%Y-%m-%d-%H-%M-%S")
dfigfut = pd.read_csv(fpath, sep=' ', header=None, names=('DateTime', 'col1', 'col2', 'col3', 'col1', 'col5'), parse_dates=[0], date_parser=dprsf, index_col=0)
dfigfut = dfigfut[starttime:endtime]
这需要大量解析不需要的行以丢弃它们。我怀疑大部分收益都来自于此。 接下来,可以加速解析器吗?
谢谢
【问题讨论】:
-
使用该字符串格式,您不需要 lambda 调用。
-
你试过
pd.read_csv(fpath, ...., skiprows=N)N是前一天数据集最后一行的索引 -
不幸的是,行数是可变的。我只知道解析日期时间后是否需要一行。需要今天的行。
-
冻糕,推断没有用。有什么选择?
-
如果您真的只关心前一天的数据,并且行数是可变的,您是否可以:a) 在某个数据库中读取的总行数? (您可以第一次手动计算文件中的行数并从那里开始)或b)如果您不能做a),只需假设并从2019年开始读取文件?
标签: pandas