假设我有一个字符串,其中包含来自数据库或电子表格的数据,采用逗号分隔格式。
例如:
data = "hello,how,are,you,232.3354,good morning"
假设这些"记录中有200个字段"。
我有兴趣查看此记录的某些字段。 Python中最快的方法是什么?
最简单的方法是:
fields = data.split(",")
result = [fields[4], fields[12], fields[123]]
有没有更快的方法来做到这一点,利用以下事实:
我尝试使用重复调用来编写一些代码来查找跳过传递的逗号,但如果最后一个字段在字符串中太远,则会比基本的分割解决方案慢。
我正在处理数百万条记录,因此欢迎加速。
答案 0 :(得分:1)
除了将所有内容加载到内存中然后删除所需的部分之外,您不会做得太好。我的建议是压缩和更好的库。
碰巧我有几个合理大小的csv(这个是500k行)。
> import gzip
> import pandas as pd
> %timeit pd.read_csv(gzip.open('file.csv.gz'))
1 loops, best of 3: 545 ms per loop
删除列也很快,我不确定主要成本是多少。
> %timeit csv[['col1', 'col2']]
100 loops, best of 3: 5.5 ms per loop
答案 1 :(得分:0)
如果result
可以是tuple
而不是列表,那么使用operator.itemgetter
可能会获得一些加速(如果您正在进行多次调用):
from operator import itemgetter
indexer = itemgetter(4,12,123)
result = indexer(data.split(','))
你需要timeit
才能真正看到你是否获得加速。