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

Pandas多层索引DataFrame修改值不生效原因及正确操作咨询

问题原因
  • 你的操作属于链式索引赋值,第一次执行df.loc["f1","fm1"]时,pandas返回的是对应行的Series副本而非原DataFrame的视图,后续对这个副本执行.loc["k"]=-999的修改只会作用在临时副本上,不会同步到原始的df,所以查询原数据时还是旧值。
  • 这种行为是pandas的设计机制导致的,链式操作无法保证返回对象是视图还是副本,修改副本自然不会对原数据生效,部分场景下pandas还会抛出SettingWithCopyWarning警告提醒这类风险。
正确修改方法

不要拆分两次.loc调用,把行索引、列选择都放在同一个.loc操作里完成一次定位,示例代码如下:

# 多级行索引用元组包裹,直接指定对应行+对应列,修改直接作用在原df
df.loc[("f1", "fm1"), "k"] = -999

修改后再查询df.loc[("f1", "fm1"), "k"]就会返回你设置的-999。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:27:07