python - 将数据框结果复制到 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']
所以,我试图使用.loc
which 改变了我的方法:
Transactions_Meat.loc[:,'Avg_IPrice'] = Transactions_Meat['Rev'] / Transactions_Meat['Units_Sold']
不幸的是,我仍然收到同样的警告。我已经按照此处所述访问了 pandas 的文档。我还检查了已经在处理这个问题的stackoverflow-question 。但我无法摆脱警告。
是否可以使用 DataFrame.loc 方法删除警告?
解决方案
这条线是模棱两可的:
Transactions_Meat = Transactions[Transactions['Category'] == 'Meat']
如果您想要一份副本,请明确并使用pd.DataFrame.copy
:
Transactions_Meat = Transactions[Transactions['Category'] == 'Meat'].copy()
这应该会删除随后的警告,并保证您Transactions
在操作时不会修改原始数据框Transactions_Meat
。
推荐阅读
- javascript - 在 Google 跟踪代码管理器中,是否有用于获取用户客户端 ID 的 JavaScript 函数?
- ios - 带有cordova-plugin-ionic-webview或cordova-plugin-wkwebview-engine插件的cordova ios出现白色空白屏幕问题
- laravel - 如何通过 1 Model 和 1 Controller 通过 eloquent 关系功能查询 3 表到 1 表数据收集
- sql-server - T-SQL ORDER BY 自定义排序
- javascript - Select2 删除另一个选择时的默认选项
- sql - Oracle SQL:TRY_CONVERT 等效/解决方法
- java - Mockito 重复方法调用被测试的同一个函数/构造函数
- linux - 将每个文件处理输出到 bash 中的单独目录
- xml - 在 .NET 中将子 XML 元素反序列化为 XML 字符串
- reactjs - React-add-msal getAccessToken 无法从缓存中加载