Pandas非唯一Datetime索引下如何用.loc更新对应索引的最后一行
实现方案
可以仅基于索引值完成目标操作,不需要重建索引,通过布尔条件配合分组计数即可用.loc实现精准更新:
示例代码
# 已知目标索引值 target_date = df.index[0] # 替换为你实际要匹配的日期索引值 # 仅更新对应索引的最后一行value列为5 df.loc[ (df.index == target_date) & (df.groupby(level=0).cumcount(ascending=False) == 0), 'value' ] = 5
运行结果
value sort datetime 2021-10-22 1 a 2021-10-22 2 b 2021-10-22 3 c 2021-10-22 5 d
逻辑说明
groupby(level=0).cumcount(ascending=False)会对每个相同索引的行从后往前生成序号,对应索引的最后一行序号固定为0- 两层布尔条件叠加就可以唯一筛选出目标索引的最后一行,通过
.loc赋值不会触发副本警告,完全符合你的使用限制
你代码报错的原因
你之前调用df.index[-1].argmax()是对单个datetime.date对象调用argmax方法,该方法属于数组/序列对象,单个标量没有这个方法,所以抛出属性错误。
内容的提问来源于stack exchange,提问作者piemashandgravy
相关产品推荐
相关产品推荐

