首页 >后端开发 >Python教程 >如何有效处理Pandas的SettingWithCopyWarning?

如何有效处理Pandas的SettingWithCopyWarning?

Linda Hamilton
Linda Hamilton原创
2024-12-25 15:02:12138浏览

How Can I Effectively Handle Pandas' SettingWithCopyWarning?

处理Pandas中的SettingWithCopyWarning

在将Pandas从0.11升级到0.13.0rc1时,用户可能会遇到大量SettingWithCopyWarning消息。一个这样的例子是:

E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol']   = quote_df['TVol']/TVOL_SCALE

理解警告

SettingWithCopyWarning 标记可能会混淆的“链接”分配,例如:

df[df['A'] > 2]['B'] = new_val  # new_val not set in df

这并不总是有效预期的,特别是当第一个选择返回副本时。要解决此问题,请使用:

df.loc[df['A'] > 2, 'B'] = new_val

解决提供的代码中的警告

在提供的代码片段中:

quote_df['TVol']   = quote_df['TVol']/TVOL_SCALE

您正在有效地执行链式赋值相当于:

quote_df = quote_df[quote_df['A'] > 2]
quote_df['TVol'] = new_val

此模式无法与反例区分开来,并会触发警告。

禁用警告

如果您确信写入不会影响原始帧,请使用以下命令禁用警告:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'

其他信息

要进一步了解,请参阅以下资源:

  • Pandas 用户指南:索引和选择数据
  • Python 数据科学手册:数据索引和选择
  • 真正的 Python:Pandas 中的SettingWithCopyWarning
  • Dataquest:SettingwithCopyWarning:如何修复 Pandas 中的此警告
  • 走向数据科学:解释中的SettingWithCopyWarning熊猫

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

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