在Python中将带有偏移量的时间戳转换为utc时间戳?

问题描述 投票:0回答:1

我有一个数据框,其中有一列 -

date_col
2024-05-12T17:46:50.746922-07:00
2024-05-12T17:31:35.438304-07:00
2024-05-12T17:46:50.642095-07:00
2024-05-12T17:02:02.299320-07:00

我尝试了下面的代码-

df['updated'] = datetime.fromisoformat(str(df['date_col'])).astimezone(timezone.utc).isoformat(timespec="milliseconds")

但是它给出了错误-

TypeError: fromisoformat: argument must be str
print(type(df['date_col'])) gives <class 'pandas.core.series.Series'>
print(df.dypes) gives date_col object

预期输出的形式为 -

2024-05-13T00:46:50.746Z

如有任何帮助,我们将不胜感激。

python datetime timezone utc iso
1个回答
0
投票

我会尝试这样的事情:

import pandas as pd
from datetime import datetime
import pytz

# Convert the column to datetime objects
df['date_col'] = pd.to_datetime(df['date_col'], utc=True)

# Convert to UTC and format as expected
df['updated'] = df['date_col'].dt.tz_convert('UTC').dt.strftime('%Y-%m-%dT%H:%M:%S.%fZ')

一些解释:

  1. pd.to_datetime(df['date_col'], utc=True):此行将 date_col 列转换为 datetime 对象,假设列中的字符串表示 UTC 时间。
  2. df['date_col'].dt.tz_convert('UTC'):这会将日期时间对象转换为 UTC 时区。 dt 访问器用于 pandas 中的日期时间操作。
  3. df['date_col'].dt.tz_convert('UTC').dt.strftime('%Y-%m-%dT%H:%M:%S.%fZ'): 此行转换使用 strftime 方法将 UTC 日期时间对象转换为所需的字符串格式。格式字符串 '%Y-%m-%dT%H:%M:%S.%fZ' 表示预期的输出格式,其中 %f 用于微秒,Z 表示 UTC 时区。

运行此代码后,DataFrame 中更新的列应包含预期的输出格式。

!!!如果 date_col 中的字符串尚未采用 UTC 格式,则需要调整 pd.to_datetime 调用以指定正确的时区或格式。

© www.soinside.com 2019 - 2024. All rights reserved.