如何在Pandas DataFrame中将MM:SS.百分秒时间转换为秒数并新增列
问题解决方法
你触发错误的核心原因是:Time/G列存储的是时间长度(分:秒.百分秒),而非具体时间点,用datetime类型解析本身不符合场景,datetime的小时字段天然有0-23的范围限制,才会触发解析报错。这里提供两种可行实现方案:
方案1:用pandas内置timedelta类型解析(推荐)
timedelta专门用来存储时间差/时间长度,没有小时范围限制,只需要给原有时间字符串补前缀00:,补成时:分:秒.百分秒的标准格式即可正常解析:
import pandas as pd # 补前缀后转timedelta,直接计算总秒数 df_7['Seconds/G'] = pd.to_timedelta('00:' + df_7['Time/G']).dt.total_seconds()
运行后Seconds/G列的值会和预期完全一致,比如第一条Army的38:51.86会转为38*60 + 51.86 = 2331.86秒。
方案2:字符串拆分直接计算
如果不想依赖时间类型解析,也可以直接拆分字符串手动计算,逻辑更透明:
def time_to_sec(time_str): min_part, sec_part = time_str.split(':') return int(min_part) * 60 + float(sec_part) df_7['Seconds/G'] = df_7['Time/G'].apply(time_to_sec)
内容的提问来源于stack exchange,提问作者Pmannn
相关产品推荐
相关产品推荐

