如何加快CSV日期转换为Pandas时间戳

时间:2014-01-20 23:04:46

标签: python pandas

我在CSV文件中有一些日期和时间的数据。我想快速将这些转换为Pandas时间戳,但下面的代码花了太长时间。有没有办法加快速度?瓶颈步骤是最后一步。谢谢!

TY1 = pd.read_csv('Data\TY_2013_1min.csv')
TY2 = pd.read_csv('Data\TY_2012_1min.csv')

TY = TY2.append(TY1, ignore_index=True)
TY.index = pd.to_datetime(TY.Date + ' ' + TY.Time)

2 个答案:

答案 0 :(得分:0)

您可以reading the csv直接parse_dates

TY1 = pd.read_csv('Data\TY_2013_1min.csv',
                  parse_dates=[['Date', 'Time']],
                  index_col = 'Date_Time')

注意:也许concat更有意义而不是追加:

TY = pd.concat([TY1, TY2], ignore_index=True)

答案 1 :(得分:0)

我发现最快的方法是创建自己的解析器。 例如:

def dt_parse(s1, s2):
    dt = datetime.datetime(int(s1[6:]), int(s1[0:2]),  int(s1[3:5]),
                           int(s2[:2]), int(s2[3:5]), int(s2[6:8]))
    # depending on the datetime format you can move these values around
    return dt

然后您可以在pd.read_csv中指定您使用的日期和时间列(本例中为1和2)以及您的解析器(dt_parse):

    df = pd.read_csv(file_path,
             sep=',',
             decimal='.',
             header=-1,
             parse_dates=[[1,2]],
             date_parser=dt_parse,
             index_col='1_2')

我发现对于大文件(~2G,它使其快30%)比拉日期和时间并分别创建时间戳列表。希望这有帮助