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

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。

有什么建议吗?


当前回答

避免使用链式索引赋值

您正在处理带有链式索引的赋值,这将导致SettingWithCopy警告。无论如何都要避免这种情况。

你的作业将不得不诉诸于一个单独的.loc[]或.iloc[]片,正如这里解释的那样。因此,在你的情况下:

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

其他回答

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

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

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

苏,你的问题是将['x',C]的NaN转换为值10

答案是…

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

另一种代码是

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

你也可以使用.loc进行条件查找,如下所示:

df.loc[df[<some_column_name>] == <condition>, [<another_column_name>]] = <value_to_add>

其中<some_column_name是您想要检查<条件>变量的列,<another_column_name>是您想要添加的列(可以是新列,也可以是已经存在的列)。<value_to_add>是您想要添加到该列/行中的值。

这个示例并不能精确地解决当前的问题,但是对于想要根据条件添加特定值的人来说,它可能是有用的。

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

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