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

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。

有什么建议吗?


当前回答

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

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

其他回答

我建议:

df.loc[index_position, "column_name"] = some_value

同时修改多个单元格:

df。loc[start_idx_pos: End_idx_pos, "column_name"] = some_value . loc[start_idx_pos: End_idx_pos, "column_name"] = some_value

建议的设置方法(根据维护人员)为:

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

使用“链式索引”(df['x']['C'])可能会导致问题。

See:

https://stackoverflow.com/a/21287235/1579844 http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-view-versus-copy https://github.com/pydata/pandas/pull/6031

你可以使用。iloc。

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

df.loc [' c ', ' x '] = 10 这将改变第c行和 xth列。

从0.21.1版本开始,您还可以使用.at方法。与这里提到的.loc相比有一些不同- pandas .at与.loc,但它在单值替换上更快