python - 如何更改索引中的特定日期值?
问题描述
我正在尝试将日期框架中的最后一个索引值更改为另一个日期。
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
我猜这种不匹配是导致错误的原因,但不知道如何解决它。
解决方案
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
推荐阅读
- ios - 如何在另一个 ViewController 中调用函数?
- python - 使用存储在 Secret Manager 中的密钥初始化 Firebase Admin SDK
- r - 如何在 R 中的几个列表上使用嵌套循环?
- java - 模拟方法的本地对象并从中读取
- javascript - 推入数组时覆盖现有对象 - 替换或添加
- javascript - 更新特定日期的 react-calendar 区域标签
- javascript - 当我在 laravel 中编译所有脚本时,为什么脚本不起作用?
- javascript - ReferenceError:未定义活动表
- php - 即使 id 错误,具有自动增量 id 的代码点火器查询也会返回 true
- security - 通过 Azure Function 安全访问 Azure 表存储