相关疑难解决方法(0)

如何从日期时间对象中删除pytz时区?

有没有一种简单的方法从pytz日期时间对象中删除时区?
例如dt,dt_tz在这个例子中重建:

>>> import datetime
>>> import pytz
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2012, 6, 8, 9, 27, 32, 601000)
>>> dt_tz = pytz.utc.localize(dt)
>>> dt_tz
datetime.datetime(2012, 6, 8, 9, 27, 32, 601000, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)

python timezone pytz

99
推荐指数
1
解决办法
7万
查看次数

将pandas timezone-aware DateTimeIndex转换为天真时间戳,但在某个时区

您可以使用该功能tz_localize来创建一个时间戳或DateTimeIndex时区知道,但你怎么能反其道而行之:你怎么能转换时区了解时间戳天真的一个,同时保持其时区?

一个例子:

In [82]: t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")

In [83]: t
Out[83]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
Run Code Online (Sandbox Code Playgroud)

我可以通过将时区设置为None来删除时区,但结果将转换为UTC(12点钟变为10):

In [86]: t.tz = None

In [87]: t
Out[87]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 10:00:00, ..., 2013-05-18 10:00:09]
Length: 10, Freq: S, Timezone: None
Run Code Online (Sandbox Code Playgroud)

有没有另一种方法我可以将DateTimeIndex转换为时区naive,但保留时区设置为?


关于我问这个问题的一些背景:我想使用timezone天真的时间序列(为了避免时区的额外麻烦,我不需要它们用于我正在处理的情况).
但出于某种原因,我必须在当地时区(欧洲/布鲁塞尔)处理时区感知的时间序列.正如我的所有其他数据时区天真(但在我的本地时区代表),我想这个时间序列转化为天真的进一步工作与它,但它也有在我的本地时区来表示(所以刚取出时区信息,不将用户可见时间转换为UTC).

我知道时间实际上是内部存储为UTC,并且只有当你表示它时才转换为另一个时区,因此当我想要"离域化"时必须进行某种转换.例如,使用python datetime模块,您可以像这样"删除"时区:

In [119]: d = pd.Timestamp("2013-05-18 12:00:00", tz="Europe/Brussels")

In [120]: d
Out[120]: <Timestamp: 2013-05-18 12:00:00+0200 CEST, tz=Europe/Brussels>

In [121]: …
Run Code Online (Sandbox Code Playgroud)

python pandas

71
推荐指数
6
解决办法
6万
查看次数

标签 统计

python ×2

pandas ×1

pytz ×1

timezone ×1