2017-01-09 6 views
-3

У меня очень большой фреймворк данных, в котором один из столбцов, ['date'], datetime (dtype is string still) отформатирован, как показано ниже .. иногда он отображается как hh: mm : сс а иногда ч: мм: сс (с часами 9 и более ранних версий)Очистка несогласованного форматирования даты в pandas dataframe

Tue Mar 1 9:23:58 2016 
Tue Mar 1 9:29:04 2016 
Tue Mar 1 9:42:22 2016 
Tue Mar 1 09:43:50 2016 

pd.to_datetime() не будет работать, когда я пытаюсь преобразовать строку в формат даты и времени, так что я надеялся найдите какую-то помощь в получении 0-го времени до того времени, когда вы пропали без вести.

Любая помощь очень ценится!

ответ

2
import pandas as pd 
date_stngs = ('Tue Mar 1 9:23:58 2016','Tue Mar 1 9:29:04 2016','Tue Mar 1 9:42:22 2016','Tue Mar 1 09:43:50 2016') 
a = pd.Series([pd.to_datetime(date) for date in date_stngs]) 
print a 

выход

0 2016-03-01 09:23:58 
1 2016-03-01 09:29:04 
2 2016-03-01 09:42:22 
3 2016-03-01 09:43:50 
+0

Он не работает по какой-то причине, но все равно спасибо! У меня все еще есть ошибка при запуске to_datetime с вашей функцией. Я нашел другое решение, которое я разместил ниже, но это не очень красиво. –

0
time = df[0].str.split(' ').str.get(3).str.split('').str.get(0).str.strip().str[:8] 
year = df[0].str.split('--').str.get(0).str[-5:].str.strip() 
daynmonth = df[0].str[:10].str.strip() 

df_1['date'] = daynmonth + ' ' +year + ' ' + time 

df_1['date'] = pd.to_datetime(df_1['date']) 

Нашел работать сам, когда изменения порядка

0

Предполагая, что у вас есть один столбец DataFrame со строками, как указано выше, и имя столбца 0 тогда следующее разделит строки по пробелу, а затем возьмет третью строку и нуль заполнит ее zfill

Предполагая, начиная df

      0 
0 Tue Mar 1 9:23:58 2016 
1 Tue Mar 1 9:29:04 2016 
2 Tue Mar 1 9:42:22 2016 
3 Tue Mar 1 09:43:50 2016 

df1 = df[0].str.split(expand=True) 
df1[3] = df1[3].str.zfill(8) 
pd.to_datetime(df1.apply(lambda x: ' '.join(x.tolist()), axis=1)) 

Выход

0 2016-03-01 09:23:58 
1 2016-03-01 09:29:04 
2 2016-03-01 09:42:22 
3 2016-03-01 09:43:50 
dtype: datetime64[ns]