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

如何格式化DataFrame中不同格式的时间字符串列表为统一格式

统一格式化DataFrame中的时间字符串

方法一:正则表达式替换

针对单个数字的小时和分钟补前导零,直接通过正则匹配替换完成格式化:

import pandas as pd
import re

time = ["1:5 am", "1:35 am", "8:1 am", "9:14 am", "14:23 pm", "20:2 pm"]
df = pd.DataFrame({'time': time})

# 给开头单个数字的小时补前导零
df['formatted_time'] = df['time'].str.replace(r'^(\d):', r'0\1:', regex=True)
# 给冒号后单个数字的分钟补前导零
df['formatted_time'] = df['formatted_time'].str.replace(r':(\d) ', r':0\1 ', regex=True)

# 输出结果
print(df['formatted_time'].tolist())

输出结果:

["01:05 am", "01:35 am", "08:01 am", "09:14 am", "14:23 pm", "20:02 pm"]

方法二:利用pandas时间解析函数

通过将字符串解析为时间对象,再按指定格式输出,这种方式更稳健,能兼容更多时间格式:

import pandas as pd

time = ["1:5 am", "1:35 am", "8:1 am", "9:14 am", "14:23 pm", "20:2 pm"]
df = pd.DataFrame({'time': time})

# 解析时间字符串为datetime对象,再格式化为目标格式
df['formatted_time'] = pd.to_datetime(df['time'], format='%H:%M %p').dt.strftime('%H:%M %p').str.lower()

# 输出结果
print(df['formatted_time'].tolist())

输出结果与方法一一致。

两种方法对比:

  • 正则法:轻量快速,适合固定格式的简单补零场景,但对异常格式容错性差。
  • 时间解析法:通用性强,能自动处理多种时间格式转换,但依赖pandas的时间解析逻辑,对不符合规范的时间字符串(如14:23 pm这种24小时制加pm的写法)需确保解析器能兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:42:38