尝试使用 .loc[row_indexer 修改 DataFrame 切片时出现“SettingWithCopyWarning” ,col_indexer],尽管理论上避免了复制操作。在这种情况下,有必要检查另一个 DataFrame 是否影响当前的 DataFrame。
重现错误:
解决方案 - 使用 .copy():
要解决此问题,在创建过滤的 DataFrame new_df 时使用 .copy() 至关重要。这将创建原始 DataFrame 的副本,允许修改而不触发警告。
<code class="python">new_df_copy = df.loc[df.col1>2].copy() new_df_copy.loc[2, 'new_column'] = 100</code>
此方法消除了“SettingWithCopyWarning”。
避免 Convert_objects(convert_numeric= 的警告) True):
“convert_objects(convert_numeric=True)”函数也可能会触发警告。为了避免这种情况,请在应用函数之前使用 .copy():
<code class="python">value1['Total Population'] = value1['Total Population'].astype(str).copy().convert_objects(convert_numeric=True)</code>
总之,在创建过滤的 DataFrame 或应用修改 DataFrame 的数据操作函数之前使用 .copy() 将阻止“SettingWithCopyWarning. ”这确保了对原始 DataFrame 的副本执行修改,避免任何意外行为。
以上是为什么Python的.loc[row_indexer, col_indexer]会触发“SettingWithCopyWarning”以及如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!