Python将Pandas中时间字符串列转换为分钟整数的方法
把Pandas中'travel_time'字符串列转换为分钟整数的方法
针对你的需求,这里提供两种实用的实现方式,都能准确区分小时和分钟单位,避免直接提取数字导致的错误:
方法1:字符串提取+数值计算
通过正则提取小时和分钟的数值,再转换为总分钟数,适合需要自定义处理逻辑的场景:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'travel_time': ['1 hour 10 mins', '34 mins', '58 mins', '1 hour 32 mins', '12 mins'] }) # 提取小时数(无小时信息则填充0) df['hours'] = df['travel_time'].str.extract(r'(\d+) hour').fillna(0).astype(int) # 提取分钟数 df['minutes'] = df['travel_time'].str.extract(r'(\d+) mins').astype(int) # 计算总分钟数 df['total_mins'] = df['hours'] * 60 + df['minutes'] # 可选:删除中间辅助列 df = df.drop(['hours', 'minutes'], axis=1)
方法2:利用Pandas时间差函数(更简洁)
Pandas的pd.to_timedelta可以直接识别这类时长字符串,转换为时间差对象后再提取总分钟数:
df['total_mins'] = pd.to_timedelta(df['travel_time']).dt.total_seconds() // 60 # 转换为整数类型 df['total_mins'] = df['total_mins'].astype(int)
关键说明
不能直接去除所有非数值内容,比如1 hour 10 mins直接提取数字会得到110,完全不符合实际时长。必须根据单位(hour/mins)分别提取数值后再换算求和。
内容的提问来源于stack exchange,提问作者import_numpy
相关产品推荐
相关产品推荐

