2016-11-16 5 views
1

Я некоторые данные за август месяц/2015 в dataframe в следующем формате:Противоречивые Datetime в панд

Timestamp     Value 

2015-12-08 23:58:00   3.4 
2015-12-08 23:59:00   3.2 
2015-08-13 00:00:00   1.1 
2015-08-13 00:01:00   0.9 

Есть два доступных форматов уу-дд-мм гггг-мм-дд (начиная с 13 августа). Я изо всех сил пытаюсь преобразовать их в общий формат. Любая помощь будет оценена по достоинству.

Благодаря

+1

Это сложный вопрос и требует нечеткой логики и гораздо больше данных, которые вы предоставили. Используя то, что у вас есть, я могу определить, что мне нужно преобразовать «2015-12-08» в «2015-08-12», но это только в контексте того, что рядом с ним. Дело в том, что это не вопрос панды. Скорее всего, это тот, на кого вы кричите, чтобы испортить вопрос с данными. – piRSquared

+0

У меня есть данные месяца, начиная с августа/01 до августа/31. Проблема заключается в том, что датаформат данных с августа/01 по август/12 находится в yy-dd-mm и с августа/13 августа по 31 год находится в yy-mm-dd. Мне просто нужен согласованный формат даты и времени без изменения столбца значений. – johndaniel

+0

Откуда вы знаете его данные за август? А не декабрьские данные? Ответ на этот вопрос может обеспечить логику в процессе очистки. – Parfait

ответ

1

Во-первых, преобразующие строки в datatime, начиная с ожидаемой правильном формате, и просят игнорировать ошибки:

df['Correct'] = pd.to_datetime(df.Timestamp, 
           format='%Y-%d-%m %H:%M:%S', 
           errors='coerce') 


df.Correct 
Out[34]: 
0 2015-08-12 23:58:00 
1 2015-08-12 23:59:00 
2     NaT 
3     NaT 
Name: Correct, dtype: datetime64[ns] 

Теперь вы знаете, где применить второй формат:

df.Correct.update(pd.to_datetime(df[df.Correct.isnull()].Timestamp, 
           format='%Y-%m-%d %H:%M:%S', 
           errors='coerce')) 
df 
Out[36]: 
      Timestamp Val    Correct 
0 2015-12-08 23:58:00 3.4 2015-08-12 23:58:00 
1 2015-12-08 23:59:00 3.2 2015-08-12 23:59:00 
2 2015-08-13 00:00:00 1.1 2015-08-13 00:00:00 
3 2015-08-13 00:01:00 0.9 2015-08-13 00:01:00