【发布时间】:2016-11-26 15:28:45
【问题描述】:
当我使用 pandas read_csv 读取具有时区感知日期时间的列(并将此列指定为索引)时,pandas 将其转换为 timezone naive utc DatetimeIndex。
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。
【问题讨论】:
-
你看this了吗?
-
是的,我做到了。但这个具体问题是关于处理实际存在的时区信息。在我的问题中,pandas.read_csv 通过将从 csv 读取的日期时间转换为时区天真的 utc 日期时间来丢失时区信息。