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

在Pandas中基于timedelta为DataFrame添加时间列的方法

解决Pandas DataFrame添加时间增量列的问题

嘿,这个问题我碰到过!你之前的报错原因很明确——df['mins'].item()只能提取单个标量值,但你的mins列是一整列的Series数据,自然会抛出"can only convert an array of size 1 to a Python scalar"的错误。下面给你几个实用的解决方法:

方法1:用Pandas内置的to_timedelta(推荐,简洁高效)

这是最适合Pandas场景的方法,直接把整个mins列转换成时间增量,再和current_time相加,Pandas会自动帮你完成广播运算:

import pandas as pd
import datetime

# 初始化你的数据和时间变量
df = pd.DataFrame({
    'id': [1, 2, 3, 3],
    'value': ['a', 'u', 'i', 'g'],
    'mins': [12.4, 14.2, 16.2, 17.0]
})
current_time = datetime.datetime(2018, 1, 2, 14, 0, 34, 628481)

# 生成total_time列
df['total_time'] = current_time + pd.to_timedelta(df['mins'], unit='m')

运行后你会得到每行对应的时间,比如第一行就是2018-01-02 14:12:58.628481(12.4分钟等于12分24秒,加到原时间上)。

方法2:用apply逐行处理

如果需要更灵活的自定义逻辑,可以用apply对每行的mins值单独计算:

df['total_time'] = df['mins'].apply(lambda x: current_time + datetime.timedelta(minutes=x))

这个方法逻辑直观,但数据量较大时,性能会比方法1差一些,毕竟是逐行遍历处理。

方法3:转换为Pandas Timestamp处理

如果后续还要做更多时间相关的操作,把current_time转成Pandas的Timestamp会更方便:

# 转换为Timestamp
current_ts = pd.Timestamp(current_time)
# 计算时间列
df['total_time'] = current_ts + pd.to_timedelta(df['mins'], unit='m')

# 若需要转回datetime.datetime类型,可添加这一步:
# df['total_time'] = df['total_time'].dt.to_pydatetime()

Timestamp支持更多Pandas专属的时间函数,适合复杂时间场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:55:18