Cau*_*der 2 python time timezone pandas
还有一个十一年前就有类似标题的问题。
我有一个 pandas 数据框,其中包含一列 datetime.time 值。
val time
a 12:30:01.323
b 12:48:04.583
c 14:38:29.162
Run Code Online (Sandbox Code Playgroud)
我想将时间列从 UTC 转换为 EST。
我尝试这样做dataframe.tz_localize('utc').tz_convert('US/Eastern'),但它给了我以下错误:RangeIndex Object has no attribute tz_localize
to_datetime接受一个参数utc (bool),如果为 true,则将时间戳强制为 utc。
to_datetime返回 a DateTimeIndex,它有一个 method tz_convert。此方法会将 tz 感知时间戳从一种时区转换为另一种时区。
因此,这个变换可以简明地写成
df = pd.DataFrame(
[['a', '12:30:01.323'],
['b', '12:48:04.583'],
['c', '14:38:29.162']],
columns=['val', 'time']
)
df['time'] = pd.to_datetime(df.time, utc=True, format='%H:%M:%S.%f')
# convert string to timezone aware field ^^^
df['time'] = df.time.dt.tz_convert('EST').dt.time
# convert timezone, discarding the date part ^^^
Run Code Online (Sandbox Code Playgroud)
这会产生以下数据框:
val time
0 a 07:30:01.323000
1 b 07:48:04.583000
2 c 09:38:29.162000
Run Code Online (Sandbox Code Playgroud)
这也可以是 1-liner,如下所示:
val time
0 a 07:30:01.323000
1 b 07:48:04.583000
2 c 09:38:29.162000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4829 次 |
| 最近记录: |