Python 3.x 为数据帧中的单元格设置值
我有以下数据帧:Python 3.x 为数据帧中的单元格设置值,python-3.x,pandas,Python 3.x,Pandas,我有以下数据帧: K = pd.DataFrame({"A":[1,2,3,4], "B":[5,6,7,8]}) 然后我将第一行和第一列中的单元格设置为11: K.iloc[0]["A"] = 11 当我再次检查数据帧时,我看到赋值已经完成,K.iloc[0][“A”]等于11。但是,当我将列添加到此数据框并对新列中的单元格执行相同的操作时,赋值不成功: K["C"] = 0 K.iloc[0]["C"] = 11 因此,当我再次检查数据帧时,K.iloc[0][“C”]的值仍然为零。如
K = pd.DataFrame({"A":[1,2,3,4], "B":[5,6,7,8]})
然后我将第一行和第一列中的单元格设置为11:
K.iloc[0]["A"] = 11
当我再次检查数据帧时,我看到赋值已经完成,K.iloc[0][“A”]等于11。但是,当我将列添加到此数据框并对新列中的单元格执行相同的操作时,赋值不成功:
K["C"] = 0
K.iloc[0]["C"] = 11
因此,当我再次检查数据帧时,K.iloc[0][“C”]的值仍然为零。如果有人能告诉我这里发生了什么以及我如何解决这个问题,我将不胜感激。如果默认索引,则可以使用
范围索引
,但它通过标签0
设置索引值(与位置0相同):
您的解决方案失败的原因可能位于:
这有时会起作用,但不能保证,因此应避免:
dfc['A'][0]=111
可以通过以下方式获取列的位置来解决此问题:
为简单起见,我将以不同的顺序执行操作,并使用
loc
:
K.loc[0, 'C'] = 0
K.loc[0, ['A', 'C']] = 11
当您使用
K.iloc[0][“C”]
时,首先获取第一行,这样您就有了数据帧中片段的副本,然后获取列C。这样您就可以从片段而不是原始数据帧中更改副本
你的第一个电话,K.iloc[0][“A”]=11
工作得很好,这在某种意义上说是幸运的
好习惯是在“一次性”中使用loc,因此您可以访问数据帧的原始值,而不是切片副本:
K.loc[0,"C"] = 11
请注意,iloc和loc是不同的功能,即使它们在这里看起来非常相似。
loc
应该可以工作:
K.loc[0]['C'] = 11
K.loc[0, 'C'] = 11
上述两种版本的loc
都能为数据帧K
赋值
K.loc[0,"C"] = 11
K.loc[0]['C'] = 11
K.loc[0, 'C'] = 11