You need to enable JavaScript to run this app. 如何从Pandas DataFrame列单元格中提取时间的小时与分钟部分
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas DataFrame列单元格中提取时间的小时与分钟部分

Pandas提取带AM/PM时间字段的小时分钟实现方法

针对DataFrame列中存储的"04:38:00 AM"这类带上午/下午标识的时间值,可根据数据格式特征和后续分析需求,选择以下任意一种方法提取得到"04:38"格式的小时分钟内容:

方法1:固定长度字符串切片(适用格式完全统一场景)

当所有时间字符串的小时部分固定为两位补零格式(即长度、结构无偏移)时,可直接通过字符串切片取前5位字符,恰好匹配HH:MM的结构:

# 假设待处理列名为 'time_raw'
df['time_hm'] = df['time_raw'].str[:5]
  • 优势:计算效率最高,逻辑最简单
  • 局限:如果存在小时位未补零(如"9:05:00 AM")、字符串长度不统一的情况,会出现提取错位

方法2:正则匹配提取(鲁棒性强,适配非完全统一格式)

通过正则匹配抓取字符串开头的“小时:分钟”数字组合,不依赖固定字符串长度,即使存在小时位不补零的情况也能正确提取:

df['time_hm'] = df['time_raw'].str.extract(r'(\d{1,2}:\d{2})', expand=False)
  • 优势:适配性更强,可自动跳过后续的秒数、AM/PM标识部分

方法3:转换为标准时间类型后格式化(推荐用于后续分析场景)

如果后续需要基于时间开展计算、筛选等操作,优先将字符串列转换为Pandas内置datetime类型后再格式化,从根源上避免字符串解析带来的误差:

# 第一步:按带AM/PM的12小时制格式解析时间字符串
df['time_parsed'] = pd.to_datetime(df['time_raw'], format='%I:%M:%S %p')
# 第二步:格式化为目标的小时分钟格式
# 若需保留原12小时制的显示效果(如04:38 AM输出04:38),用%I:%M
df['time_hm'] = df['time_parsed'].dt.strftime('%I:%M')
# 若需转换为24小时制显示(如04:38 PM输出16:38),替换为'%H:%M'即可
  • 优势:可自动识别缺失值、格式异常值,转换后的时间列可直接支持各类时间维度的计算操作

验证示例:对原始值"04:38:00 AM",三种方法均可稳定输出目标值"04:38"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 17:36:01