我使用以下代码将数据帧列中的字符串转换为日期时间,并为每行添加 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
格式。
特别是在处理大量数据时,最好的方法是什么?
您可以使用
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)