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

如何解决提取DataFrame时间列分钟数时的AttributeError错误?

解决Timedelta列提取分钟数的AttributeError问题

这个报错很典型,我来帮你理清楚问题所在和解决办法:

问题根源

你的time列是Timedelta(时间差)类型(从dtype('<m8[ns]')能直接看出来),而不是我们常用的Datetime(日期时间)类型。这两种类型的dt属性提供的方法/属性有明显区别:

  • Datetime类型的dt对象(DatetimeProperties)有minute(单数)属性,用来提取具体时刻的分钟数
  • Timedelta类型的dt对象(TimedeltaProperties)只有minutes(复数)属性,用来提取时间差的总分钟数

你误用了单数形式的minute,自然会触发AttributeError。

解决方案分两种情况:

情况1:你确实需要提取Timedelta的总分钟数

直接把minute改成复数minutes即可:

df['minute'] = df.time.dt.minutes

比如00:30:45这个Timedelta,会返回30(取总分钟数的整数部分)。

情况2:你的time列其实是一天内的时刻(不是时间差)

如果00:30:45代表的是当天的某个时间点,而不是和某个起点的时间差,那你应该先把它转换为Datetime类型。推荐结合你的date列生成完整的日期时间:

# 合并date和time列成完整的Datetime
df['full_datetime'] = pd.to_datetime(df['date']) + df['time']
# 提取分钟数
df['minute'] = df.full_datetime.dt.minute

如果只是单独处理time列,也可以把它加到一个任意基准日期上转换:

df['datetime_time'] = pd.to_datetime('1970-01-01') + df['time']
df['minute'] = df.datetime_time.dt.minute

额外提醒

以后区分Timedelta和Datetime的dt属性时,可以记住这个小规律:

  • Datetime的属性是单数(描述时刻的某个部分:hour, minute, second)
  • Timedelta的属性是复数(描述时间差的总量:hours, minutes, seconds)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:27:57