python – 使用索引为pandas DataFrame中的特定单元格设置值

weixin_38050602 2019-09-12 12:24:30
我创建了一个Pandas DataFrame 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的内容没有改变.它再次只是DataFrame中的NaN. 有什么建议?
...全文
705 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38088281 2019-09-12
  • 打赏
  • 举报
回复
RukTech’s answer,df.set_value(‘C’,’x’,10),远比我下面建议的选项快.但是,它已经是slated for deprecation. 继续前进,recommended method is .iat/.at. 为什么df.xs(‘C’)[‘x’] = 10不起作用: 默认情况下,df.xs(‘C’)返回数据的新数据帧with a copy,所以 df.xs('C')['x']=10 仅修改此新数据框. df [‘x’]返回df数据帧的视图,所以 df['x']['C'] = 10 修改df本身. 警告:有时很难预测操作是返回副本还是视图.出于这个原因docs recommend avoiding assignments with “chained indexing”. 所以建议的替代方案是 df.at['C', 'x'] = 10 这确实修改了df. In [18]: %timeit df.set_value('C', 'x', 10) 100000 loops, best of 3: 2.9 µs per loop In [20]: %timeit df['x']['C'] = 10 100000 loops, best of 3: 6.31 µs per loop In [81]: %timeit df.at['C', 'x'] = 10 100000 loops, best of 3: 9.2 µs per loop

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧