Да, вы можете сделать это в самой функции read_csv()
, вы можете использовать аргумент parse_dates
и отправить в список столбцов для анализа в качестве даты для него. Пример -
df= pd.read_csv("myfile.csv",names=['DateTime','Freq'],parse_dates=['DateTime'])
Демо -
In [41]: import io
In [42]: s = """Date, SomeNum
....: 01/01/2014 00:00:00, 50.031
....: 01/01/2014 00:00:01, 50.026
....: 01/01/2014 00:00:02, 50.019
....: 01/01/2014 00:00:03, 50.008"""
In [43]: df = pd.read_csv(io.StringIO(s),parse_dates=['Date'])
In [44]: df
Out[44]:
Date SomeNum
0 2014-01-01 00:00:00 50.031
1 2014-01-01 00:00:01 50.026
2 2014-01-01 00:00:02 50.019
3 2014-01-01 00:00:03 50.008
In [45]: df['Date']
Out[45]:
0 2014-01-01 00:00:00
1 2014-01-01 00:00:01
2 2014-01-01 00:00:02
3 2014-01-01 00:00:03
Name: Date, dtype: datetime64[ns]
результаты синхронизации различных методов для CSV с 1 миллиона записей -
In [92]: def func1():
....: df = pd.read_csv('a.csv',names=['DateTime','Freq'])
....: df['DateTime'] = pd.to_datetime(df['DateTime'], coerce=True,format='%d/%m/%Y %H:%M:%S')
....: return df
....:
In [96]: def func2():
....: return pd.read_csv('a.csv',names=['DateTime','Freq'],parse_dates=['DateTime'])
....:
In [97]: %timeit func1()
1 loops, best of 3: 6.5 s per loop
In [98]: %timeit func2()
1 loops, best of 3: 652 ms per loop
Вы можете передать из параметров 'parse_dates = [0]' 'для read_csv' так попробовать' ДФ = pd.read_csv ("myfile.csv", имена = ['DateTime', 'Freq'], parse_dates = [0]) 'this будет анализировать первый столбец как дату и время, оно должно быть значительно быстрее – EdChum
Спасибо. Кажется, это работает, но не очень большая скорость. –