Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理熊猫的时区原始日期时间_Python_Datetime_Pandas - Fatal编程技术网

Python 处理熊猫的时区原始日期时间

Python 处理熊猫的时区原始日期时间,python,datetime,pandas,Python,Datetime,Pandas,我有一些包含时区原始日期的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 t

我有一些包含时区原始日期的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,我可以将数据强制为datetime。但是,在尝试本地化时,出现了以下错误:

>>> 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
>>日期=“2014-03-07T09:04:26.943”、“2014-03-06T20:35:21.937”、“2014-02-25T12:39:44””
>>>baz=pd.read_json(日期,转换日期=[0])[0]
>>>baz.tz_本地化(“美国/太平洋”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
tz_本地化文件“/Users/abeer/.virtualenvs/venv/lib/python2.7/site packages/pandas/core/generic.py”,第3494行
(姓名)
TypeError:索引不是有效的DatetimeIndex或PeriodIndex

更一般地说,我尝试对数据帧中的列执行此操作,因此无法修改索引。

使用convert\u dates选项指定列,或者使用series type选项应自动转换

>>> pd.read_json(dates, convert_dates=[0])[0]
0   2014-03-07 09:04:26.943000
1   2014-03-06 20:35:21.937000
2          2014-02-25 12:39:44
Name: 0, dtype: datetime64[ns]
>>> pd.read_json(dates, typ='series')
0   2014-03-07 09:04:26.943000
1   2014-03-06 20:35:21.937000
2          2014-02-25 12:39:44
dtype: datetime64[ns]
从那里你可以在时间戳上使用tz_本地化。假设这太慢了

baz.apply(lambda ts: ts.tz_localize('US/Pacific'))
内联的tz_localize作用于索引(而不是值):


convert_dates
kwarg设置为带有日期值的列是否有助于最初将值读取为日期?谢谢,传递convert_dates有助于正确解析日期。然而,我仍然不能以一种不受欢迎的方式使用tz_本地化。我更新了问题的更多细节。
>>> pd.Series(index=baz).tz_localize('US/Pacific')
0
2014-03-07 09:04:26.943000-08:00   NaN
2014-03-06 20:35:21.937000-08:00   NaN
2014-02-25 12:39:44-08:00          NaN
dtype: float64