我想使用Python中的to_datetime()
或arrow
库将包含UNIX时间戳的以下pandas系列转换为pandas datetime。我想将时区设置为UTC,当前为Europe/Paris
对于Pandas,我正在使用以下功能,但不确定如何考虑Europe\Paris
时区
pd.to_datetime(df['dates'], unit='s')
答案 0 :(得分:1)
在转换时通过utc=True
,如下所示:
pd.to_datetime(df['dates'], unit='s', utc=True)
引用pd.to_datetime()
文档:
utc : boolean, default None Return UTC DatetimeIndex if True (converting any tz-aware datetime.datetime objects as well).
或者,如果需要更多控制,请使用pd.Series.dt.tz_convert()
。
您应将时间戳转换为本地datetime对象,使用原始时区将其本地化(使其成为可识别时区的datetime对象),然后将其转换为所需的时区。
赞:
# convert timestamp to native datetime
ps = pd.to_datetime(df['dates'], unit='s') # dtype: datetime64[ns]
# localize it to Europe/Paris
ps = ps.dt.tz_localize('Europe/Paris') # dtype: datetime64[ns, Europe/Paris]
# Finaly, convert to UTC
ps = ps.dt.tz_convert('UTC') # dtype: datetime64[ns, UTC]
tz_localize
和tz_convert
之间的区别在于,第一个不会将时间移动到另一个时区,而第二个会移动。
答案 1 :(得分:0)
尝试使用:
pd.to_datetime(df['dates'], unit='s').astype('datetime64[ns, Europe/Paris]').dt.tz_convert('UTC')
或者如果版本低于0.24.0,则可以使用:
s = pd.to_datetime(df['dates'], unit='s').dt.tz_localize('Europe/Paris')
s.dt.tz_convert('UTC')
答案 2 :(得分:0)
假设您具有这样的数据集,
2019-02-02 11:32:46.484236 4
2019-02-03 11:32:46.484236 1
2019-02-04 11:32:46.484236 8
2019-02-05 11:32:46.484236 2
2019-02-06 11:32:46.484236 4
2019-02-07 11:32:46.484236 2
2019-02-08 11:32:46.484236 5
2019-02-09 11:32:46.484236 5
2019-02-10 11:32:46.484236 6
2019-02-11 11:32:46.484236 1
下面是在'Asia/Kolkata'
时区。
根据您的问题,您需要从此处获得UTC时区。
因此,对于首先,你需要为本地化的是,该数据集属于哪个时区?
所以,为此.....
df = df.tz_localize(tz = 'Asia/Kolkata')
它会使的局部化在的名称'Asia/Kolkata'
。
输出:
2019-02-02 11:32:46.484236+05:30 4
2019-02-03 11:32:46.484236+05:30 1
2019-02-04 11:32:46.484236+05:30 8
2019-02-05 11:32:46.484236+05:30 2
2019-02-06 11:32:46.484236+05:30 4
2019-02-07 11:32:46.484236+05:30 2
2019-02-08 11:32:46.484236+05:30 5
2019-02-09 11:32:46.484236+05:30 5
2019-02-10 11:32:46.484236+05:30 6
2019-02-11 11:32:46.484236+05:30 1
现在您可以转换您的'Asia/Kolkata'
时区为UTC。
这样...
df = df.tz_convert(tz = 'UTC')
输出:
2019-02-02 06:02:46.484236+00:00 4
2019-02-03 06:02:46.484236+00:00 1
2019-02-04 06:02:46.484236+00:00 8
2019-02-05 06:02:46.484236+00:00 2
2019-02-06 06:02:46.484236+00:00 4
2019-02-07 06:02:46.484236+00:00 2
2019-02-08 06:02:46.484236+00:00 5
2019-02-09 06:02:46.484236+00:00 5
2019-02-10 06:02:46.484236+00:00 6
2019-02-11 06:02:46.484236+00:00 1
您可以在'Europe\Paris'
时区中进行同样的操作。