2017-08-14 164 views
0

我想读取3年的数据文件(每个日期一个),而且我感兴趣的部分通常很小(总计约140万行),与父代相比文件(每个约90MB和150万行)。以下代码在过去使用较少的文件对我来说非常有用。但是要处理1095个文件,它正在爬取(大约需要3-4秒才能读取一个文件)。任何建议使这个更高效/更快?将多个csv文件有效地读入熊猫数据框

import pandas as pd 
from glob import glob 

file_list = glob(r'C:\Temp2\dl*.csv') 
for file in file_list: 
    print(file) 
    df = pd.read_csv(file, header=None) 
    df = df[[0,1,3,4,5]] 
    df2 = df[df[0].isin(det_list)] 
    if file_list[0]==file: 
     rawdf = df2 
    else: 
     rawdf = rawdf.append(df2) 
+0

你可以指定'dtypes'列 – DJK

+0

感谢,@ djk47463:最后的DF有4个整数和1个日期时间字段。这会提高阅读/处理速度吗? – ram

回答

3

IIUC,试试这个:

import pandas as pd 
from glob import glob 

file_list = glob(r'C:\Temp2\dl*.csv') 

cols = [0,1,3,4,5] 

df = pd.concat([pd.read_csv(f, header=None, usecols=cols) 
        .add_prefix('c') 
        .query("c0 in @det_list") 
       for f in file_list], 
       ignore_index=True) 
+0

谢谢@MaxU。这段代码也提取我需要的数据。但它仍然需要30:24分钟。我为此运行计时。稍后将重新运行我的原始代码,并在问题中发布时间。 – ram