2017-08-14 119 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

相關問題