提前感谢您的帮助。
我对python比较新,我正在尝试编写一个python脚本来加载1000个文件中的部分csv文件。例如,我有1000个具有此格式的文件
x,y
1,2
2,4
2,2
3,9
...
我只想加载行,例如x=2
。我在这里看到很多关于挑选某些线条的帖子(即第1,2,3行),但没有选择符合某些标准的线条。一种解决方案是简单地单独打开每个文件并遍历每个文件,按照我的方式加载行。但是,我认为有一种更好的方法可以做到这一点(因为这些文件不小,效率有点令人担忧)。
可能加速的一点是x列被排序,即一旦我看到值x = a,我将永远不会看到另一个x值小于a,因为我从头开始迭代这些行。
是否有更有效的方法来执行此操作而不是逐行浏览每个文件?
编辑: 我采取的一种方法是
numpy.fromregex(file, r'^' + re.compile(str(mynum)) + r'\,\-\d$', dtype='f');
其中mynum是我想要的号码,但这不起作用
答案 0 :(得分:1)
试试pandas库。它具有numpy的互操作性和更灵活的方式。有了这个库,你可以做下一件事:
data = pandas.read_csv('file.csv')
# keep only rows with x equals to 2
data = data[data['x'] == 2]
# convert to numpy array
arr = numpy.asarray(data)
您可以阅读有关使用here选择数据的详情。
答案 1 :(得分:0)
csv库附带python,它允许部分读取文件。
import csv
def partial_load(filename):
ds = []
c = csv.reader( open(filename) )
legend = next( c )
for row in c:
row = [float(r) for r in row]
if len(row) > 0:
if row[0] > 2:
break
ds.append(row)
return ds