You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas:将DataFrame中mm:ss格式字符串时间转为浮点型总分钟数

把DataFrame中"分钟:秒"格式字符串转换为总分钟数

方法1:拆分字符串直接计算

这是最直观的实现方式,将时间字符串按冒号拆分后提取分钟和秒,直接计算总分钟数:

import pandas as pd

# 示例数据
df = pd.DataFrame({"Time": ["125:19", "0:00", "45:30", "10:05"]})

# 拆分分钟和秒为独立列,转换为浮点型
df[["mins", "secs"]] = df["Time"].str.split(":", expand=True).astype(float)
# 计算总分钟数:分钟数 + 秒数/60
df["Time_minutes"] = df["mins"] + df["secs"] / 60

# 可选:删除中间生成的辅助列
df = df.drop(["mins", "secs"], axis=1)

方法2:正则提取+一行式计算

如果不想生成中间列,可以用正则提取数值后直接计算,代码更紧凑:

import pandas as pd

df = pd.DataFrame({"Time": ["125:19", "0:00", "45:30", "10:05"]})

# 提取冒号前后的数字,转换为浮点型后计算总分钟数
df["Time_minutes"] = df["Time"].str.extract(r"(\d+):(\d+)")\
                               .astype(float)\
                               .apply(lambda row: row[0] + row[1]/60, axis=1)

方法3:利用pandas timedelta类型处理

如果习惯用时间类型操作,可以将分钟和秒转换为timedelta对象,再转换为总分钟数:

import pandas as pd

df = pd.DataFrame({"Time": ["125:19", "0:00", "45:30", "10:05"]})

# 分别构造分钟和秒的timedelta,求和后转换为总秒数再除以60得到分钟数
df["Time_minutes"] = (pd.to_timedelta(df["Time"].str.split(":").str[0] + "m") + 
                      pd.to_timedelta(df["Time"].str.split(":").str[1] + "s"))\
                     .dt.total_seconds() / 60

这几种方法都比嵌套lambda的写法更简洁易读,根据自己的习惯选择即可。

内容的提问来源于stack exchange,提问作者PineNuts0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:33:01