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

DataFrame索引日期差计算报错:'int' object is not subscriptable 求解法

问题:计算DataFrame索引天数差时报错

以下是复现代码及错误信息:

type(data1.index)
# pandas.core.indexes.base.Index

data1.index = pd.to_datetime(data1.index)
type(data1.index)
# pandas.core.indexes.datetimes.DatetimeIndex

d1 = data1.index[-1]
d1
# Timestamp('2022-11-02 00:00:00')

d3 = data1.index[1]
d3
# Timestamp('2021-10-03 00:00:00')

(d1-d3).days[0]
# ---------------------------------------------------------------------------
# TypeError                                 Traceback (most recent call last)
# C:Temp/ipykernel_3208/1081380695.py in <module>
# ----> 1 (d1-d3).days[0]
#
# TypeError: 'int' object is not subscriptable

错误原因

d1和d3都是单个Timestamp对象,二者相减得到的是单个Timedelta对象,它的.days属性返回的是一个整数,整数不支持下标[0]访问,因此触发类型错误。

你之前在小型DataFrame中能运行,大概率是当时误取了索引切片(比如data1.index[-1:]而非data1.index[-1]),切片返回的是DatetimeIndex对象,相减后得到TimedeltaIndex,此时.days返回整数数组,才能用[0]访问。

解决办法

直接去掉下标[0],即可获取两个日期的天数差:

(d1 - d3).days

如果需求是计算首尾索引的天数差,更简洁的写法:

(data1.index[-1] - data1.index[0]).days

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:15:35