如何在Python Pandas中将分:秒格式转为单节剩余秒数?
解决方案:Pandas转换足球比赛剩余秒数
问题原因
直接调用split()报错,是因为split()是Python字符串的原生方法,而Pandas的Series是批量数据对象,需要用.str访问器来对Series里的每个字符串元素调用字符串方法,也就是用str.split()而非直接split()。
方法一:拆分字符串计算
拆分分钟和秒字段,计算已用时间后用单节总秒数900减去得到剩余秒数:
import pandas as pd # 拆分gameClock为分钟、秒两列并转为整数类型 df[['mins', 'secs']] = df['gameClock'].str.split(':', expand=True).astype(int) # 计算剩余秒数 df['remaining_secs'] = 900 - (df['mins'] * 60 + df['secs'])
方法二:用时间差工具转换
借助Pandas的时间转换工具,将字符串转为时间差类型后提取总秒数:
# 转换为时间差类型并提取已用总秒数 df['elapsed_secs'] = pd.to_timedelta(df['gameClock']).dt.total_seconds() # 计算剩余秒数并转为整数 df['remaining_secs'] = 900 - df['elapsed_secs'].astype(int)
异常值处理提示
如果gameClock列存在空值或非XX:XX格式的异常数据,会导致转换失败,可先过滤有效数据:
# 仅保留符合分钟:秒格式的行 df = df[df['gameClock'].str.match(r'^\d+:\d{2}$')]
内容的提问来源于stack exchange,提问作者user22570245
相关产品推荐
相关产品推荐

