【发布时间】:2014-12-13 04:56:54
【问题描述】:
我有一些包含时区原始日期的 JSON 数据。
["2014-03-07T09:04:26.943", "2014-03-06T20:35:21.937", "2014-02-25T12:39:44"]
我使用 pandas.read_json 读取此数据,并将其视为对象列。
我知道数据是太平洋时区,而不是 UTC。
是否有一种矢量化的方式将其转换为 np.datetime64 列?目前,我正在做:
def _parse_datetime(dt_string):
# We are provided timezone naive data that is in Pacific time. Convert it to UTC.
timestamp = pd.Timestamp(dt_string, tz="US/Pacific")
if pd.isnull(timestamp):
return pd.NaT
return np.datetime64(timestamp)
data.apply(_parse_datetime)
对于大量数据来说真的很慢
更新:
通过指定 convert_dates,我可以将数据强制转换为日期时间。但是,在尝试本地化时,出现错误:
>>> dates = """["2014-03-07T09:04:26.943", "2014-03-06T20:35:21.937", "2014-02-25T12:39:44"]"""
>>> baz = pd.read_json(dates, convert_dates=[0])[0]
>>> baz.tz_localize('US/Pacific')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/abeer/.virtualenvs/venv/lib/python2.7/site-packages/pandas/core/generic.py", line 3494, in tz_localize
ax_name)
TypeError: index is not a valid DatetimeIndex or PeriodIndex
更一般地说,我正在尝试对数据框中的列执行此操作,因此我无法修改索引。
【问题讨论】:
-
将
convert_dateskwarg 设置为具有日期值的列是否有助于最初将值读取为日期?