为 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.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中文网其他相关文章!