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

使用iloc修改DataFrame单元格值失败,值未更新求助

问题原因及解决方法

问题根源

你用df[df['Well']=='L15'].iloc[4,6] = np.nan赋值失败,核心原因是链式索引(布尔筛选+iloc)会生成原DataFrame的临时副本,你修改的只是这个副本,原DataFrame根本没被改动。之后再执行查询时,又重新从原数据生成了新的副本,所以看到的还是原始值174.0。

正确的赋值方法

你需要直接定位到原DataFrame的对应位置,而非操作临时副本,这里提供两种可行方案:

方法1:结合.loc与索引转换

先获取Well='L15'所有行的索引,再精准定位目标单元格:

import numpy as np

# 获取L15行的索引列表
l15_row_indices = df[df['Well'] == 'L15'].index
# 定位第4个L15行(位置从0开始计数)、第7列(索引6),赋值为NaN
df.loc[l15_row_indices[4], df.columns[6]] = np.nan

方法2:用.iloc直接定位行位置

先找到Well='L15'行在原DataFrame中的位置索引,再通过iloc赋值:

import numpy as np

# 获取L15行在原DataFrame中的位置数组
l15_positions = np.where(df['Well'] == 'L15')[0]
# 定位第4个L15行的位置、第6列,赋值为NaN
df.iloc[l15_positions[4], 6] = np.nan

执行任意一种方法后,再查询df[df['Well']=='L15'].iloc[4,6],就能得到预期的NaN值。

内容的提问来源于stack exchange,提问作者Flor Elizabeth Garza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:39:18