2014-02-05 2 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의 첫 번째 열에 있습니다.

나는이 pandas.read_csv

+0

나는 그냥 복사/붙여 넣기 오류입니다 확신하지만, –

+0

당신의 APPEND 문에 예치을 잘못된 브라켓을 붙여 넣기 오류를 복사,하지만 덕분에 :) – user2761786

+0

가능한 중복 질문 : HTTP : // 유래 .com/questions/13651117/pandas-filter-lines-on-load-in-read-csv –

답변

0

use_cols를 사용하여 열 가능하다 당신이 반복자들을 만들고 봤어 알아?

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] 
관련 문제