2014-02-05 3 views
0

Я имею дело с некоторыми большими CSV-файлами. В основном у меня есть два в течение 2009 и 2010 годов. Я читал эти оба: seperatly использует панды, а затем добавляет файл 2010 к концу фреймворка 2009 года.Выбор даты в больших файлах временного ряда csv

Для этого я использую функцию:

def import_data(): 
    with open(file_A, 'r') as f: 
     reader = pd.read_csv(f, sep=',', parse_dates=({'Date_Time': [0]})) 
    with open (file_B, 'r') as B: 
     reader2= pd.read_csv(B, sep=',', parse_dates=({'Date_Time': [0]})) 
    reader=reader.append(reader2) 

    return reader 

В принципе, я затем сделать некоторую обработку, передискретизации данных. Однако все это занимает много времени из-за длины файлов.

Есть ли способ выбрать определенные строки на основе определенных входных данных? например только даты 01/10/2009 - 01/02/2010? Даты указаны в первом столбце csv.

Я знаю, что это возможно для колонок с использованием use_cols в pandas.read_csv

+0

Я уверен, что это просто ошибка копирования/вставки, но у вас есть ошибочный кронштейн в вашем дописывания заявлении –

+0

Yeh, ошибка копирования вставки, но спасибо :) – user2761786

+0

Возможный дубликат вопрос: HTTP: // StackOverflow .com/вопросы/13651117/панды-фильтр-линия-на-нагрузка-в-чтения CSV –

ответ

0

Вы пробовали делать их в итераторы?

from itertools import chain 

def import_data(): 
    with open(file_A, 'r') as f: 
     reader = pd.read_csv(f, sep=',', parse_dates=({'Date_Time': [0]}), iterator=True) 
    with open (file_B, 'r') as B: 
     reader2= pd.read_csv(B, sep=',', parse_dates=({'Date_Time': [0]}), iterator=True) 
    return chain(reader, reader2) 

desired_range = [row for row in import_data() if row >= start_date and row <= end_date] 
Смежные вопросы