如何将pandas中非标准时间字符串列转换为datetime格式
解决方案
你遇到的报错核心原因是时间字符串存在两种格式(分秒/时分秒),无法用单一格式匹配,先统一格式再转换即可:
步骤1:统一时间字符串格式
对仅含分秒的字符串前置补0:,让所有值都符合时:分:秒的结构:
import pandas as pd # 示例数据 d = {'Name': ['Joe', 'Bob'], 'Time': ['58:34', '1:02:17']} df = pd.DataFrame(data=d) # 补全小时位 df['Time'] = df['Time'].apply(lambda x: f"0:{x}" if x.count(':') == 1 else x)
步骤2:转换为时间格式并计算总秒数
因为你的数据属于时长而非固定时刻,用pd.to_timedelta(时间差类型)比datetime更适配计算总秒数的需求:
# 转换为时间差类型 df['Time'] = pd.to_timedelta(df['Time']) # 计算总秒数 df['total_seconds'] = df['Time'].dt.total_seconds()
输出结果示例
| Name | Time | total_seconds |
|---|---|---|
| Joe | 0 days 00:58:34 | 3514.0 |
| Bob | 0 days 01:02:17 | 3737.0 |
如果确实需要转换为datetime格式,统一格式后用pd.to_datetime(df['Time'], format='%H:%M:%S')即可正常转换,不会再报格式不匹配错误。
内容的提问来源于stack exchange,提问作者Progress
相关产品推荐
相关产品推荐

