2016-11-29 3 views
3

У меня есть гора CSV, где столбец дата является следующее:Быстрый способ преобразования столбец DATETIME в панд

Print df 
      Date 
0   20090501 00:00:00.831 
1   20090501 00:00:00.832 
2   20090501 00:00:01.078 
3   20090501 00:00:01.337 
4   20090501 00:00:01.580 
5   20090501 00:00:01.581 
6   20090501 00:00:01.582 
7   20090501 00:00:01.602 

Отсюда я хочу выразить его в формате '%Y%m%d %H:%M:%S.%f', следовательно:

df['Date'] = pd.to_datetime(df['Date'], format='%Y%m%d %H:%M:%S.%f') 
print df 
      Date 
      2009-05-01 00:00:00.831 
1   2009-05-01 00:00:00.832 
2   2009-05-01 00:00:01.078 
3   2009-05-01 00:00:01.337 
4   2009-05-01 00:00:01.580 
5   2009-05-01 00:00:01.581 

и, наконец, оттуда, разделить его на отдельные даты и времени колонок с помощью следующей:

df['Time'] = df['Date'].apply(lambda x:x.time()) 
df['Date1']= df['Date'].apply(lambda x:x.date()) 
print df 
     Time    Date1 
0  00:00:00.831000 2009-05-01 
1  00:00:00.832000 2009-05-01 
2  00:00:01.078000 2009-05-01 
3  00:00:01.337000 2009-05-01 
4  00:00:01.580000 2009-05-01 
5  00:00:01.581000 2009-05-01 
6  00:00:01.582000 2009-05-01 

Проблема заключается в том, что функции лямбда занимают около одной минуты, чтобы закончить, и у меня есть что-то в диапазоне 30000 CSV для обработки каждого из них примерно двумя миллионами строк. Если кто-то может дать мне более быстрое решение, это очень поможет.

Благодаря

ответ

2

Использование dt.time и dt.date:

df['Time'] = df['Date'].dt.time 
df['Date1']= df['Date'].dt.date 
print (df) 
        Date    Time  Date1 
0 2009-05-01 00:00:00.831 00:00:00.831000 2009-05-01 
1 2009-05-01 00:00:00.832 00:00:00.832000 2009-05-01 
2 2009-05-01 00:00:01.078 00:00:01.078000 2009-05-01 
3 2009-05-01 00:00:01.337 00:00:01.337000 2009-05-01 
4 2009-05-01 00:00:01.580 00:00:01.580000 2009-05-01 
5 2009-05-01 00:00:01.581 00:00:01.581000 2009-05-01 
6 2009-05-01 00:00:01.582 00:00:01.582000 2009-05-01 
7 2009-05-01 00:00:01.602 00:00:01.602000 2009-05-01 
+0

бритая около 15 секунд прочь, совсем не плохо. – ajsp

+0

Super;) Эти функции векторизованы, так быстрее, как 'apply'. – jezrael

Смежные вопросы