更改日期时间索引中的特定日期

change specific date in a datetimeindex

我有一个简单的数据框,其中包含一个日期时间索引和一个假期名称列。它的结构如下:

index = ['2016-12-25','2017-04-07','2017-12-26','2018-04-07']
data = {'holiday_name': ['xmas','independence','xmas','independence']}
df = pd.DataFrame(data=data, index=index)
df.index = pd.to_datetime(df.index)

|index      |holiday name
|2016-12-25 |christmas
|2017-07-04 |independence day
|2017-12-26 |christmas <<<<<<<<<<<<<<<
|2018-07-04 |independence day

如您所见,数据框的日期时间索引中存在错误(12 月 26 日圣诞节)。 我可以将索引作为一个新列并使用 loc/at 进行更改,但我肯定可以直接在索引上执行此操作吗?

谢谢,

答案已经给出并且完美运行。作为参考,这是我用来绕过它的...

df.reset_index(inplace=True)
df.rename(columns={'index':'date'}, inplace=True)
df.at[2,'date'] = '2017-12-25 00:00:00'
df.set_index('date', inplace=True)

您可以使用 .rename().

重命名前:

            holiday_name
2016-12-25          xmas
2017-04-07  independence
2017-12-26          xmas
2018-04-07  independence

重命名后:

df.rename(
    index={pd.Timestamp("2017-12-26"): pd.Timestamp("2017-12-24")},
    inplace=True,
)
print(df)

打印:

            holiday_name
2016-12-25          xmas
2017-04-07  independence
2017-12-24          xmas
2018-04-07  independence