首页 > 解决方案 > 将数据框结果复制到 Pandas 中的 SettingWithCopyWarning

问题描述

我正在尝试向我的 DataFrame 添加一个新列Transactions_Meat

   Transactions_Meat['Avg_IPrice'] = Transactions_Meat['Rev'] / Transactions_Meat['Units_Sold']

导致此警告

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

Transactions_Meat是一个名为的 DataFrame 的副本Transactions

Transactions_Meat = Transactions[Transactions['Category'] == 'Meat']

所以,我试图使用.locwhich 改变了我的方法:

Transactions_Meat.loc[:,'Avg_IPrice'] = Transactions_Meat['Rev'] / Transactions_Meat['Units_Sold']

不幸的是,我仍然收到同样的警告。我已经按照此处所述访问了 pandas 的文档。我还检查了已经在处理这个问题的stackoverflow-question 。但我无法摆脱警告。

是否可以使用 DataFrame.loc 方法删除警告?

标签: pythonpandasdataframe

解决方案


这条线是模棱两可的:

Transactions_Meat = Transactions[Transactions['Category'] == 'Meat']

如果您想要一份副本,请明确并使用pd.DataFrame.copy

Transactions_Meat = Transactions[Transactions['Category'] == 'Meat'].copy()

这应该会删除随后的警告,并保证您Transactions在操作时不会修改原始数据框Transactions_Meat


推荐阅读