首页 >后端开发 >Python教程 >如何有效地设置 Pandas DataFrame 中的特定单元格值?

如何有效地设置 Pandas DataFrame 中的特定单元格值?

Linda Hamilton
Linda Hamilton原创
2024-12-01 17:28:11465浏览

How to Efficiently Set a Specific Cell Value in a Pandas DataFrame?

为 Pandas DataFrame 中的特定单元格设置值

您已创建一个 DataFrame 并想要更改特定单元格的值。但是,使用 df.xs('C')['x'] = 10 不会按预期更新 DataFrame。为什么?

问题源于 df.xs() 的运行方式。默认情况下,它返回一个带有数据副本的新 DataFrame。因此, df.xs('C')['x'] = 10 仅修改新的 DataFrame,而不是原始 DataFrame。

相反,您可以使用 df['x']['C'] = 10. 此方法返回原始 DataFrame 的视图,任何修改都将应用于 df。

但是,推荐的方法是使用 .at 或.iat:

  • df.at['C', 'x'] = 10:直接设置'C'行和'x'列的值。
  • df. iat[2, 0] = 10:使用索引位置访问单元格(2 表示行,0 表示列)。

为什么 df.xs('C')['x'] = 10 被弃用?

df.set_value('C' , 'x', 10) 是首选方法,因为它的速度要快得多。但是,df.set_value() 预计将被弃用。

性能比较

基准显示 df.set_value() 在速度方面优于其他选项:

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

以上是如何有效地设置 Pandas DataFrame 中的特定单元格值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn