如何将pandas DataFrame中字符串格式的时间列转换为总分钟数
pandas时间字符串转分钟数值解决方案
你可以通过正则提取时间分量的方式实现转换,该方法天然兼容仅包含分钟、同时包含小时+分钟的两种格式:
步骤1:导入依赖并构造示例数据
import pandas as pd df = pd.DataFrame({'Time': ['20hours 10minutes', '18hours 10minutes', '15minutes', '1minutes']})
步骤2:核心转换逻辑
分别提取小时和分钟的数值,无对应分量时填充为0再做计算:
# 提取小时数,匹配不到小时的行填充0 hours = df['Time'].str.extract(r'(\d+)hours', expand=False).fillna(0).astype(int) # 提取分钟数 minutes = df['Time'].str.extract(r'(\d+)minutes', expand=False).fillna(0).astype(int) # 计算总分钟数并写入新列 df['Time_minutes'] = hours * 60 + minutes
转换后结果
| Time | Time_minutes | |
|---|---|---|
| 0 | 20hours 10minutes | 1210 |
| 1 | 18hours 10minutes | 1090 |
| 2 | 15minutes | 15 |
| 3 | 1minutes | 1 |
方案优势
- 无需提前做字符串分割、格式判断等额外预处理,适配场景全
- 基于pandas向量化操作实现,性能远高于逐行遍历的写法,大体积数据集也能快速处理
- 正则规则可灵活扩展,后续如果新增秒、天等时间单位,只需要新增对应提取逻辑即可
内容的提问来源于stack exchange,提问作者Grasper
相关产品推荐
相关产品推荐

