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

如何无需循环将Pandas的datetime列转换为分钟数整数

无需循环的高效实现方案

当然有!Pandas 本身就为批量数据处理设计了矢量化操作,完全不需要写循环就能快速完成这个需求——这也是它比原生Python循环高效得多的核心原因。

具体操作步骤:

  1. 转换时长格式为timedelta类型:你的datetime列是X days HH:MM:SS的字符串格式,首先需要把它转换成 Pandas 专门用于表示时长的timedelta64类型(如果还没转的话)。
  2. 批量计算总分钟数:利用timedelta类型的内置方法,一次性完成所有行的计算。

完整代码示例:

import pandas as pd

# 构建你的数据集
df = pd.DataFrame({
    'user_id': [1, 2, 5, 7, 1, 2],
    'datetime': [
        '13 days 21:50:00',
        '0 days 02:05:00',
        '10 days 00:10:00',
        '2 days 01:20:00',
        '3 days 11:50:00',
        '1 days 02:30:00'
    ]
})

# 将字符串格式的时长转为timedelta类型
df['datetime'] = pd.to_timedelta(df['datetime'])

# 矢量化计算总分钟数(无循环)
df['minutes'] = (df['datetime'].dt.total_seconds() // 60).astype(int)

# 输出结果
print(df)

结果说明:

运行后会得到符合预期的输出(注:你给出的示例中10 days 00:10:00对应的预期14402应该是笔误,正确计算结果为14410,即10天×24小时×60分钟 + 10分钟):

user_id        datetime  minutes
0        1 13 days 21:50:00    20030
1        2  0 days 02:05:00      125
2        5 10 days 00:10:00    14410
3        7  2 days 01:20:00     2960
4        1  3 days 11:50:00     5030
5        2  1 days 02:30:00     1590

为什么这个方法更好?

这个方案全程使用 Pandas 的矢量化API,底层基于C语言实现计算,比手动写Python循环效率高几十甚至上百倍,尤其是当数据集包含上万行甚至更多数据时,差距会非常明显。

如果你的datetime列已经是timedelta类型,直接跳过转换步骤,执行计算即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:44:22