我已经创建了一个熊猫数据框架

df = DataFrame(index=['A','B','C'], columns=['x','y'])

得到了这个

    x    y
A  NaN  NaN
B  NaN  NaN
C  NaN  NaN

现在,我想给特定的单元格赋值,例如给C行和x列赋值。 我希望得到这样的结果:

    x    y
A  NaN  NaN
B  NaN  NaN
C  10  NaN

下面的代码:

df.xs('C')['x'] = 10

但是df的内容没有改变。数据帧仍然只包含nan。

有什么建议吗?


当前回答

尝试使用df。Loc [row_index,col_indexer] = value

其他回答

这是唯一对我有效的方法!

df.loc['C', 'x'] = 10

在这里了解有关.loc的更多信息。

如果你不想改变整行的值,而只是改变一些列的值:

x = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
x.iloc[1] = dict(A=10, B=-10)

尝试使用df。Loc [row_index,col_indexer] = value

你可以使用。iloc。

df.iloc[[2], [0]] = 10

更新:.set_value方法将被弃用。它们是很好的替代品,不幸的是熊猫提供的文件很少


最快的方法是使用set_value。该方法比.ix方法快100倍。例如:

df。set_value('C', 'x', 10)