背景:
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的SettingWithCopyWarning?的详细内容。更多信息请关注PHP中文网其他相关文章!