2014-09-05 107 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日期時間字符串但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返回兩個呼叫正確,時區感知時間戳:

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>) 
相關問題