You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pandas DataFrame中识别非时间戳值并替换为NaN(Python)

识别DataFrame中无法转换为时间差的异常值

方法1:借助pd.to_timedelta的错误处理标记异常值

利用errors='coerce'参数,将所有无法转换为时间差的值转为NaT(时间差类型的空值),再筛选出原列非空但转换后为NaT的行,就能定位所有异常值:

# 生成转换后的时间差列,无法转换的设为NaT
df['Finish_timedelta'] = pd.to_timedelta(df['Finish'], errors='coerce')
# 筛选出原值非空但转换失败的行
invalid_rows = df[df['Finish_timedelta'].isna() & df['Finish'].notna()]
# 查看所有唯一的异常值
print(invalid_rows['Finish'].unique())

这种方法能覆盖所有pd.to_timedelta不支持的格式,包括手动输入的"NA"、格式错误的字符串等。

方法2:用正则表达式匹配合法时间格式

如果明确合法格式是HH:MM:SS或H:MM:SS,可以用正则直接匹配,筛选出不匹配的异常值:

import re
# 定义匹配HH:MM:SS或H:MM:SS的正则
valid_pattern = r'^\d{1,2}:\d{2}:\d{2}$'
# 筛选出不匹配正则且原值非空的行
invalid_rows = df[~df['Finish'].str.match(valid_pattern, na=False)]
# 查看异常值
print(invalid_rows['Finish'].unique())

na=False参数用于跳过原列中的NaN值,避免正则匹配报错。


内容的提问来源于stack exchange,提问作者Laurence Pellerin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:28:16