pandas 如何将“X days HH:MM:SS”格式的时长列转换为纯分钟数值
pandas时长列转纯分钟数值的可落地方案
核心思路
不需要手动写正则拆分字符串,pandas原生的pd.to_timedelta()本身就支持解析“X days HH:MM:SS”这类标准时长字符串,几行代码就能搞定,稳定性远高于手动拆分字段。
实现代码
import pandas as pd # 替换为你实际的目标列名,比如原列名叫duration df["duration"] = pd.to_timedelta(df["duration"]) # 生成整数格式的纯分钟列,匹配秒数舍去取整的规则 df["duration_minutes"] = df["duration"].dt.total_minutes.astype(int)
效果匹配验证
- 输入
"0 days 00:39:00":转换后得到整数39,和示例要求一致 - 输入
"1 day 01:45:23":总分钟计算结果约为1545.38,取整数部分后得到1545,完全符合示例输出要求
必避的坑
千万别用
df["duration"].dt.seconds / 60的方式算分钟,这个属性只会返回时长里当日的秒数,完全忽略days部分的数值,算出来的结果会比真实值小非常多。如果列里有空值,pd.to_timedelta会自动把无效值转成NaT,最后对应分钟值为NaN,不会让整个流程崩掉。
异常处理说明
就算列里有部分格式不统一的值(比如有的写法少了前导零、空格分隔不一致),pd.to_timedelta也基本都能正常识别,不用额外调整逻辑。真遇到解析失败的行,单独排查对应字符串的格式问题就行,不用改整体转换代码。
内容的提问来源于stack exchange,提问作者Kartik Rayaprolu
相关产品推荐
相关产品推荐

