我正在尝试使用iloc为数据帧中的单元格分配值,但它不起作用.它只是保持其原始价值



正在尝试将174.0更改为NaN。我是不是错过了一些显而易见的东西?在整个数据帧中查找值的索引太复杂了,所以我将其缩小到Well L15。这是不允许的吗?

input: df[df['Well']=='L15'].iloc[4,6]
output: 174.0
input: df[df['Well']=='L15'].iloc[4,6] = np.nan 
input: df[df['Well']=='L15'].iloc[4,6]
output: 174.0

我希望这能在最后给我NaN,而不是174.0。非常感谢。

文档说:

除了简单的情况外,很难预测它会返回视图还是副本(这取决于数组的内存布局,Panda对此没有任何保证(

所以在你的情况下,很难预测df[df['Well']=='L15'].iloc[4,6]会是吗

  • 视图(在这种情况下,更改其元素将更改原始元素,因为它只是视图(
  • 副本(在这种情况下,元素将被更改,但原始元素将而不是。(

这里有一个可以使用的变通方法。显式创建一个副本(这样Panda就不会因为不知道它是视图还是副本而抱怨(,更改此副本中的值,然后替换原始中的值:

sub_df = df[df['Well']=='L15'].copy()
sub_df.iloc[4, 6] = np.nan 
df[df['Well']=='L15'] = sub_df

相关内容

最新更新