2014-09-05 2 views
1

Я пытаюсь использовать pandas.to_datetime для преобразования между форматами временных меток в моей базе кода, однако при условии, с строковым иногда pandas не кажется, чтобы извлечь UTC смещения правильно:Использования панд для преобразования строки временного метки

Вот правильное преобразование, то UTC смещение правильно захвачена, как это отражено в Timestamp объекта:

In[76]: pd.to_datetime('2014-04-09T15:29:59.999993-0500', utc=True) 
Out[76]: Timestamp('2014-04-09 20:29:59.999993+0000', tz='UTC') 

Вот альтернативный строковое представление, которое по-прежнему является допустимым ISO 8601 DateTime строки но UTC смещение -0500, кажется, игнорируется :

In[77]: pd.to_datetime('2014-04-09T152959.999993-0500', utc=True) 
Out[77]: Timestamp('2014-04-09 15:29:59.999993+0000', tz='UTC') 

С другой стороны dateutil пакет обрабатывает вещи в порядке:

In[78]: dateutil.parser.parse('2014-04-09T152959.999993-0500') 
Out[78]: datetime.datetime(2014, 4, 9, 15, 29, 59, 999993, tzinfo=tzoffset(None, -18000)) 

Я мог бы, конечно, использовать dateutil, но есть какая-то причина, что pandas.to_datetime не обрабатывает различные строки времени даты ISO правильно. Я здесь что-то не так?

Использование Python 2.7.6 и pandas 0.13.1

ответ

1

Использование панд 0.14.0: оба вызова к pd.to_datetime возвращения правильный, часовой пояс, известно Timestamp:

In [72]: pd.__version__ 
Out[72]: '0.14.0' 

In [69]: pd.to_datetime('2014-04-09T152959.999993-0500', utc=True) 
Out[69]: Timestamp('2014-04-09 20:29:59.999993+0000', tz='UTC') 

In [70]: pd.to_datetime('2014-04-09T15:29:59.999993-0500', utc=True) 
Out[70]: Timestamp('2014-04-09 20:29:59.999993+0000', tz='UTC') 

In [71]: dateutil.parser.parse('2014-04-09T152959.999993-0500').astimezone(pytz.utc) 
Out[71]: datetime.datetime(2014, 4, 9, 20, 29, 59, 999993, tzinfo=<UTC>) 
Смежные вопросы