我创建了一个 Pandas DataFrame
df = DataFrame(index=['A','B','C'], columns=['x','y'])
并得到了这个
xy
一个南南
B南南
C南南南
现在,我想为特定单元格分配一个值,例如行 C
和列 x
。我希望得到这个结果:
xy
一个南南
B南南
C 10 南
使用此代码:
df.xs('C')['x'] = 10
但是, df
的内容没有改变。数据框再次仅包含 NaN
s。
有什么建议么?
原文由 Mitkp 发布,翻译遵循 CC BY-SA 4.0 许可协议
RukTech 的答案
df.set_value('C', 'x', 10)
比我在下面建议的选项快得多。但是,它已被 预定弃用。展望未来, 推荐的方法是
.iat/.at
。为什么
df.xs('C')['x']=10
不起作用:df.xs('C')
默认情况下,返回一个 带有数据副本 的新数据框,所以仅修改此新数据框。
df['x']
返回df
数据帧的视图,所以修改
df
本身。警告:有时很难预测操作返回的是副本还是视图。出于这个原因, 文档建议避免使用“链式索引”进行分配。
所以推荐的替代方案是
它 确实 修改
df
。