Python:将字符串转换为带有可选毫秒的日期时间

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

我使用以下代码将数据帧列中的字符串转换为日期时间,并为每行添加 60 天。

pd.to_datetime(df['datetime_string'], format="%Y-%m-%dT%H:%M:%S.%fZ") + timedelta(days=60)

由于我从外部 API 加载数据并将其写入

df['datetime_string']
,我收到了不同的数据,例如:
"2023-11-24T09:34:18Z"
"2023-11-24T09:35:19.130122Z"
所以有时我的字符串中没有毫秒部分。

这会导致

ValueError: time data "2023-11-24T09:34:18Z" doesn't match format "%Y-%m-%dT%H:%M:%S.%fZ"

我想用 .000000 填充缺失的毫秒部分,并始终采用

%Y-%m-%dT%H:%M:%S.%fZ
格式。

特别是在处理大量数据时,最好的方法是什么?

python pandas datetime format string-to-datetime
1个回答
-1
投票

您可以使用

np.where
并显式检查毫秒部分:

np.where(df['datetime_string'].str.contains(r'\.\d+Z$', regex=True),
         pd.to_datetime(df['datetime_string'], format="%Y-%m-%dT%H:%M:%S.%fZ"),
         pd.to_datetime(df['datetime_string'], format="%Y-%m-%dT%H:%M:%SZ"))
    + timedelta(days=60)
© www.soinside.com 2019 - 2024. All rights reserved.