首页 > 后端开发 > Python教程 > 如何理解和解决Pandas的SettingWithCopyWarning?

如何理解和解决Pandas的SettingWithCopyWarning?

DDD
发布: 2024-12-26 04:37:10
原创
716 人浏览过

How to Understand and Resolve Pandas' SettingWithCopyWarning?

了解 Pandas 中的SettingWithCopyWarning

背景:

Pandas 版本 0.13 及更高版本介绍设置WithCopyWarning以突出显示可能引起的混乱通过“链接”作业。此警告旨在解决 DataFrame 副本被修改而导致意外结果的情况。

该警告意味着什么?

该警告表示某个值正在 DataFrame 的切片副本上设置。具体来说,它建议将以下行:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
登录后复制
登录后复制

替换为:

quote_df.loc[row_index, 'TVol'] = value
登录后复制

如何修复警告:

提供的解决方案警告是使用 loc 索引代替。但是,这可能并不适合所有用例。如果您不关心更新原始 DataFrame,您可以安全地禁用警告:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
登录后复制

其他说明:

SettingWithCopyWarning 标记链接的分配并不总是按预期工作。当第一个选择返回 DataFrame 的副本,并且随后对该副本进行分配时,就会出现问题。此模式可能会导致混乱,因为更改不会反映在原始 DataFrame 中。

在您的情况下,以下代码会导致警告:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
登录后复制
登录后复制

Since quote_df['TVol' ] 是一个副本,赋值不会修改原始DataFrame。相反,请考虑使用:

quote_df = quote_df[quote_df['TVol'] > 0]
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
登录后复制

其他资源:

  • [Pandas 用户指南:索引和选择数据](https://pandas.pydata .org/pandas-docs/stable/user_guide/indexing.html)
  • [Python 数据科学手册:数据索引和选择](https://jakevdp.github.io/PythonDataScienceHandbook/02.01-indexing-and-selecting-data.html)
  • [真正的Python:Pandas 中的SettingWithCopyWarning:视图与视图副本](https://realpython.com/settingwithcopywarning-in-pandas/)
  • [Dataquest:SettingwithCopyWarning:如何修复 Pandas 中的此警告](https://www.dataquest.io/blog/ settingswithcopywarning-pandas/)
  • [走向数据科学:解释中的SettingWithCopyWarning pandas](https://towardsdatascience.com/explaining-the-settingwithcopywarning-in-pandas-520ea63f963a)

以上是如何理解和解决Pandas的SettingWithCopyWarning?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板