首页 > 解决方案 > 如何更改索引中的特定日期值?

问题描述

我正在尝试将日期框架中的最后一个索引值更改为另一个日期。

from datetime import datetime, timedelta
import pandas as pd
import numpy as np

date_1 = datetime(2021,5,31,0,0)
date_2 = datetime(2021,6,30,0,0)
df=pd.DataFrame(index={date_1,date_2},data = {1,2},columns={'X'})

我还有一个我想要的日期变量,它的类型是 datetime

last_dt = datetime(2021, 6, 24, 0, 0)

当我尝试加入两者时,我收到一条错误消息“索引不支持可变操作”

df.index[-1]=last_dt

虽然索引也是日期时间类型,但最后一个值 (df.index[-1]) 是时间戳类型。

type(df.index[-1])
pandas._libs.tslibs.timestamps.Timestamp

我猜这种不匹配是导致错误的原因,但不知道如何解决它。

标签: pythonpandasdataframe

解决方案


pd.Index对象不直接支持项目分配,因此一种方法是手动构造新索引并将其分配回去:

# we put the values till last one as is and add `last_dt` at last
df.index = [*df.index[:-1], last_dt]

或者您可以操作底层数组:

df.index.array[-1] = last_dt

推荐阅读