如何处理pandas非规整时间戳列,去除日期仅保留HH:MM:SS格式时间
处理方案
针对两列混合三种格式的转换需求,可以通过自定义逐值处理函数实现,代码如下:
步骤1:导入依赖
import pandas as pd from datetime import datetime
步骤2:定义格式转换函数
def convert_to_time(val): # 处理占位符"-"的情况 if val == "-": # 若需保留原占位符,可直接return "-",此处默认返回时间空值方便后续运算 return pd.NaT try: # 区分带日期的长格式和纯时间短格式 if len(val) > 8: # 适配 DD-MM-YYYY HH:MM:SS 格式 dt = datetime.strptime(val, "%d-%m-%Y %H:%M:%S") return dt.strftime("%H:%M:%S") else: # 校验已有HH:MM:SS格式的合法性 datetime.strptime(val, "%H:%M:%S") return val except: # 异常值处理逻辑可按需调整,此处默认返回空值 return pd.NaT
步骤3:对目标列应用转换
# 将下方的df替换为你自己的DataFrame变量名 df["Entr."] = df["Entr."].astype(str).apply(convert_to_time) df["Fim"] = df["Fim"].astype(str).apply(convert_to_time)
补充说明
- 若后续需要做时间差计算等运算,可将返回的字符串格式改为
dt.time()返回时间对象 - 异常捕获分支可根据你的数据特点调整返回值,比如填充默认时间、保留原始值等
内容的提问来源于stack exchange,提问作者thelara
相关产品推荐
相关产品推荐

