如何将F1澳大利亚大奖赛数据集中特殊格式单圈时间转换为纯秒数
字符格式圈速转秒数解决方案
最优方案是通过正则表达式批量提取分钟、秒的数值,换算后合并为总秒数,逻辑简单、性能高、适配性强,不需要依赖专门的时间解析库,不会出现时区、格式适配的异常问题。
以下是两类主流数据分析工具的便捷实现方式:
Python(Pandas)实现
适配所有「XM Y.ZZZS」格式的字符串,哪怕分钟数为多位、或部分数据不足1分钟无M字段也可兼容:
import pandas as pd # 假设df为你的数据集,time列为原始圈速字符串列 df[['minutes', 'seconds']] = df['time'].str.extract(r'(?:(\d+)M )?(\d+\.\d+)S').astype(float) # 无分钟字段的空值填充为0 df['minutes'] = df['minutes'].fillna(0) df['total_seconds'] = df['minutes'] * 60 + df['seconds'] # 可按需删除临时生成的辅助列 df = df.drop(columns=['minutes', 'seconds'])
整列向量化处理,无需循环,十万行以内数据的转换耗时可以控制在毫秒级。
R(Tidyverse生态)实现
用常用的dplyr+stringr组合即可完成批量转换:
library(dplyr) library(stringr) df <- df %>% mutate( minutes = as.numeric(str_extract(time, "\\d+(?=M)")), seconds = as.numeric(str_extract(time, "\\d+\\.\\d+(?=S)")), # 无分钟字段的空值替换为0 minutes = replace(minutes, is.na(minutes), 0), total_seconds = minutes * 60 + seconds )
内容的提问来源于stack exchange,提问作者Manbearpig
相关产品推荐
相关产品推荐

