大型csv时间序列文件中的日期选择

时间:2014-02-05 12:25:56

标签: python performance csv pandas

我正在处理一些大型CSV文件。基本上我在2009年和2010年有两个。我读过这两个是分别使用熊猫,然后将2010年文件追加到2009年数据帧的末尾。

要做到这一点,我使用函数:

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的列可以使用此功能

1 个答案:

答案 0 :(得分: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]