如何格式化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
相关产品推荐
相关产品推荐

