當我使用pandas read_csv讀取具有可識別時區的datetime(並將此列指定爲索引)時,pandas會將其轉換爲DatetimeIndex的日期時間。如何閱讀時區感知日期時間作爲一個時區天真本地日期時間索引與read_csv在熊貓?
數據在Test.csv:
DateTime,Temperature 2016-07-01T11:05:07+02:00,21.125 2016-07-01T11:05:09+02:00,21.138 2016-07-01T11:05:10+02:00,21.156 2016-07-01T11:05:11+02:00,21.179 2016-07-01T11:05:12+02:00,21.198 2016-07-01T11:05:13+02:00,21.206 2016-07-01T11:05:14+02:00,21.225 2016-07-01T11:05:15+02:00,21.233
代碼以從CSV讀:
In [1]: import pandas as pd
In [2]: df = pd.read_csv('Test.csv', index_col=0, parse_dates=True)
這導致代表時區幼稚UTC時間的索引:
In [3]: df.index
Out[3]: DatetimeIndex(['2016-07-01 09:05:07', '2016-07-01 09:05:09',
'2016-07-01 09:05:10', '2016-07-01 09:05:11',
'2016-07-01 09:05:12', '2016-07-01 09:05:13',
'2016-07-01 09:05:14', '2016-07-01 09:05:15'],
dtype='datetime64[ns]', name='DateTime', freq=None)
我試着用date_parser函數:
In [4]: date_parser = lambda x: pd.to_datetime(x).tz_localize(None)
In [5]: df = pd.read_csv('Test.csv', index_col=0, parse_dates=True, date_parser=date_parser)
這給出了相同的結果。
我怎樣才能讓read_csv創建DatetimeIndex是時區幼稚和代表的UTC時間的當地時間呢?
我正在使用熊貓0.18.1。
你看過[這個]嗎?(http://stackoverflow.com/questions/16628819/convert-pandas-timezone-aware-datetimeindex-to-naive-timestamp-but-in-certain-t?rq = 1 )? –
是的,我做到了。但是這個具體問題是關於處理實際存在的時區信息。在我的問題中,pandas.read_csv通過將從csv讀取的日期時間轉換爲天真的utc datetime來丟失時區信息。 – Puggie