在 pandas to_datetime 中使用时区

2022-01-16 00:00:00 pandas timezone

问题描述

我有时间从 epochs 时间戳我使用 data.Time_req = pd.to_datetime(data.Time_req)但是我得到了 UTC 时间,我需要从给定时间开始 +5:30.我如何告诉熊猫使用 'IST' 时区或只是 5hrs 30 mins 进一步使用它当前显示的时间.例如.7 hrs 应该变成 12:30 hrs 等等.

I have time from epochs timestamps I use data.Time_req = pd.to_datetime(data.Time_req) But I get UTC time, I need +5:30 from the given time. How do I tell pandas to use 'IST' timezone or just 5hrs 30 mins further to the time it currently shows me. eg. 7 hrs should become 12:30 hrs and so on.


解决方案

可以使用tz_localize 将时区设置为 UTC/+0000,然后 tz_convert 添加你想要的时区:

You can use tz_localize to set the timezone to UTC/+0000, and then tz_convert to add the timezone you want:

start = pd.to_datetime('2015-02-24')
rng = pd.date_range(start, periods=10)

df = pd.DataFrame({'Date': rng, 'a': range(10)})  

df.Date = df.Date.dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')
print (df)
                       Date  a
0 2015-02-24 05:30:00+05:30  0
1 2015-02-25 05:30:00+05:30  1
2 2015-02-26 05:30:00+05:30  2
3 2015-02-27 05:30:00+05:30  3
4 2015-02-28 05:30:00+05:30  4
5 2015-03-01 05:30:00+05:30  5
6 2015-03-02 05:30:00+05:30  6
7 2015-03-03 05:30:00+05:30  7
8 2015-03-04 05:30:00+05:30  8
9 2015-03-05 05:30:00+05:30  9

使用时区.

如果需要只添加Timedelta:

df.Date = df.Date + pd.Timedelta('05:30:00')
print (df)
                 Date  a
0 2015-02-24 05:30:00  0
1 2015-02-25 05:30:00  1
2 2015-02-26 05:30:00  2
3 2015-02-27 05:30:00  3
4 2015-02-28 05:30:00  4
5 2015-03-01 05:30:00  5
6 2015-03-02 05:30:00  6
7 2015-03-03 05:30:00  7
8 2015-03-04 05:30:00  8
9 2015-03-05 05:30:00  9

注意:添加 Timedelta 将更改与 datetime 对象关联的纪元时间戳.对于许多应用程序来说,这可能不是所希望的.

NOTE: Adding Timedelta will change the epoch timestamp associated with the datetime object. This may not be desired for many applications.

相关文章