我有一个数据框,其中有一列 -
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
如有任何帮助,我们将不胜感激。
我会尝试这样的事情:
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')
一些解释:
运行此代码后,DataFrame 中更新的列应包含预期的输出格式。
!!!如果 date_col 中的字符串尚未采用 UTC 格式,则需要调整 pd.to_datetime 调用以指定正确的时区或格式。