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

Pandas提取Timedelta列时分秒构建datetime时报cannot convert series to int错误

问题根因

  • 你调用的Python原生datetime()构造函数只接受单个整数作为时分秒参数,而你传入的df['hst']是整列的Series对象,自然无法直接转换为单个int值,报错和你用astype(int)是否生效无关:astype(int)只是把Series内的每个元素转为int类型,整列本身的类型依然是pandas.core.series.Series,这是正常现象。
  • 额外提示:你的ST/ET本身就是Timedelta格式,完全不需要额外提取时分秒再拼接,直接和基准日期相加即可,代码更简洁高效。

最优解决方案(无需提前提取时分秒)

直接用pandas的时间运算完成整列 datetime 构建:

import pandas as pd

# 定义基准日期
base_date = pd.Timestamp('2021-07-11')
# 直接和Timedelta列相加,一步生成对应datetime列
df['start_datetime'] = base_date + df['ST']
df['end_datetime'] = base_date + df['ET']

如果你确实需要用提取好的时分秒拼接

使用pandas自带的pd.to_datetime()向量化方法,支持直接传入Series作为时间分量参数:

df['start_datetime'] = pd.to_datetime({
    'year': 2021,
    'month': 7,
    'day': 11,
    'hour': df['hst'],
    'minute': df['mst'],
    'second': df['sst']
})

不推荐的遍历方案(仅小数据量可用)

如果一定要用原生datetime构造,可以逐行遍历处理,但数据量大时性能远低于向量化方案:

from datetime import datetime
df['start_datetime'] = df.apply(
    lambda row: datetime(2021,7,11, row['hst'], row['mst'], row['sst']),
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:24:03