在pandas to_datetime中使用时区

pyt*_*cpp 26 timezone pandas

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

jez*_*ael 45

您可以使用tz_localize将时区设置为UTC/ + 0000,然后tz_convert添加所需的时区:

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
Run Code Online (Sandbox Code Playgroud)

使用时区.

如果需要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
Run Code Online (Sandbox Code Playgroud)

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

  • 可用的时区可以通过“pytz.all_timezones”命令找到。 (5认同)

eus*_*iro 8

来自unix纪元时间戳

timestamps = [1656285319, 1656285336, 1656285424]

pd.to_datetime(timestamps, unit='s', utc=True).map(lambda x: x.tz_convert('Asia/Kolkata'))
Run Code Online (Sandbox Code Playgroud)

输出:

DatetimeIndex(['2022-06-27 04:45:19+05:30', '2022-06-27 04:45:36+05:30',
               '2022-06-27 04:47:04+05:30'],
              dtype='datetime64[ns, Asia/Kolkata]', freq=None)
Run Code Online (Sandbox Code Playgroud)

所有时区

import pytz
pytz.all_timezones
Run Code Online (Sandbox Code Playgroud)

完整列表在这里