即使使用 .loc 后,Pandas 仍然收到SettingWithCopyWarning

2023-11-29

首先,我尝试编写一些如下所示的代码:

import numpy as np
import pandas as pd
np.random.seed(2016)
train = pd.DataFrame(np.random.choice([np.nan, 1, 2], size=(10, 3)), 
                     columns=['Age', 'SibSp', 'Parch'])

complete = train.dropna()    
complete['AgeGt15'] = complete['Age'] > 15

得到SettingWithCopyWarning后,我尝试使用.loc:

complete.loc[:, 'AgeGt15'] = complete['Age'] > 15
complete.loc[:, 'WithFamily'] = complete['SibSp'] + complete['Parch'] > 0

但是,我仍然收到同样的警告。是什么赋予了?


注意:从 pandas 0.24 版本开始,is_copy已弃用并将在未来版本中删除。虽然私有属性_is_copy存在,下划线表示该属性不是公共 API 的一部分,因此不应依赖。因此,展望未来,沉默似乎是唯一正确的方法。SettingWithCopyWarning将在全球范围内这样做:

pd.options.mode.chained_assignment = None

When complete = train.dropna()被执行,dropna可能会返回一份副本,所以 出于谨慎考虑,Pandas 设置了complete.is_copy到一个诚实的 价值:

In [220]: complete.is_copy
Out[220]: <weakref at 0x7f7f0b295b38; to 'DataFrame' at 0x7f7eee6fe668>

这允许 Pandas 稍后警告您,当complete['AgeGt15'] = complete['Age'] > 15执行后您可能正在修改副本,这不会影响train。对于初学者来说,这可能是一个有用的警告。就您而言,您似乎无意修改train间接通过修改complete。因此,在您的情况下,警告只是毫无意义的烦恼。

您可以通过设置使警告静音,

complete.is_copy = False       # deprecated as of version 0.24

这比制作实际副本要快,并且可以减少SettingWithCopyWarning处于萌芽状态(此时where _check_setitem_copy叫做):

def _check_setitem_copy(self, stacklevel=4, t='setting', force=False):
    if force or self.is_copy:
        ...

如果您确实有信心知道自己在做什么,则可以关闭SettingWithCopyWarning全球范围内与

pd.options.mode.chained_assignment = None # None|'warn'|'raise'

消除警告的另一种方法是制作一个新副本:

complete = complete.copy()

但是,如果 DataFrame 很大,您可能不想这样做,因为复制 可能需要大量的时间和内存,而且它是 完全没有意义(除了为了压制warning) 如果你知道的话complete已经是副本了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使使用 .loc 后,Pandas 仍然收到SettingWithCopyWarning 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql

随机推荐

  • 如何在 Angular 6 中通过“ngserve”设置环境

    我正在尝试将我的 Angular 5 2 应用程序更新到 Angular 6 我成功地按照 Angular 更新指南中的说明进行操作 包括更新angular cli到 v6 现在我尝试通过 ng serve env local 但这给了我错
  • 克隆的 Select2 没有响应

    我正在尝试克隆包含 select2 工具的行 当我使用 jQuery 克隆该行时 克隆的 select2 没有响应 在下面给出的图像中 原始的第一个 select2 工作正常 但克隆的第二个和第三个 select2 没有响应 代码片段 do
  • 另一个快速排序 stackoverflow

    所以我一直在尝试自己实现一个快速排序 只是为了从中学习一些东西 但它也生成了一个stackoverflowException 但我似乎找不到原因是什么 有人可以给我线索吗 public void Partition List
  • 更改矩阵/数据框中的行顺序

    我需要更改 反转数据框中的行 不是转置数据 而是将底部行移动到顶部等等 如果数据框是 1 2 3 4 5 6 7 8 9 我需要转换为 7 8 9 4 5 6 1 2 3 我读过关于sort 但我认为这不是我需要的 或者我找不到方法 可能有
  • 如何在cygwin上运行ELF二进制文件

    我是 cygwin 的新手 但遇到了一些麻烦 我有 Linux ELF 编译的二进制文件 有没有办法在 cygwin 下以简单的方式午餐它 例如 Windows 二进制文件 a exe from https www cygwin com C
  • 在 C# 中的 foreach 内使用带有 lambda 表达式的三元运算符

    我正在尝试学习如何在 C 中正确使用 lambda 表达式 但我遇到了这个问题 我有一个如下定义的布尔值数组 public bool worldState new bool 25 现在 在给它赋值之后 我想循环遍历它 并在布尔为 true
  • 为什么要进行这种类型的铸造?

    我正在使用意图来启动另一个活动 并使我的意图携带一些数据作为新创建的活动的额外数据 我正在按照教程来做到这一点 该数据实际上是从层次结构中第一个活动的文本字段中读取的 并作为额外数据传送到另一个活动 所以我的代码将是这样的 Make the
  • 在 couchdb 视图中合并多个文档

    在 couchdb 中 我需要以以下格式表示一些数据 即引用数组内其他文档的外部容器 我想将这些文档分开 因为我需要单独管理它们的冲突 id 1 type container items 1 2 3 id 2 value a type it
  • Android WebView 和网络安全配置

    我正在 Android 8 26 API Oreo 上进行开发 并且使用android webkit WebView在我的应用程序中 当我用我的加载页面时 我会实现 安全网络连接 WebView 换句话说 我会避免中间人问题和自签名证书 为
  • Firestore:条件查询未执行

    这会记录快照 const db firebase firestore const collection db collection companies company meetings let query collection where
  • 图像处理,用Python? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我最近遇到一个问题 至少需
  • PHP 替换 EM Dash REGEX

    我正在尝试替换这个角色http www fileformat info info unicode char 2014 index htm定期破折号 这就是我所拥有的 但我似乎无法让它工作 dataold 9am 5pm from a ms
  • 当前没有打开 SSH 隧道。目标是否能够接受 ssh 密钥以供使用

    我在 GCP 上创建了一个 kubernetes 集群 其中的虚拟机实例具有 ubuntu 映像 我已经部署了一个 postgres 有状态集 但是当我尝试检查 pod 的日志时 我最终看到了以下内容 kubectl logs pgset
  • Joomla - 重写 getItem 方法

    我想覆盖文件 administrator components com content models article php 中找到的方法 getItem line 257 public function getItem pk null 我
  • 如何在 Java 中获取特定日期对象的年中日期? [复制]

    这个问题在这里已经有答案了 假设您有一个包含日 月和年值的 Date 对象 我想知道今天是哪一天 我的意思是 3 月 5 日是一年中的 65 号 或者说 1 月 15 日就是 15 日 请不要有乔达时间 当前项目中未使用 您可以使用Cale
  • 如何使用 Java 获取当前打开的窗口/进程的列表?

    有谁知道如何使用 Java 获取本地计算机当前打开的窗口或进程 我想做的是 列出当前打开的任务 打开的窗口或进程 就像在 Windows 任务管理器中一样 但使用多平台方法 如果可能 仅使用 Java 这是从命令解析进程列表的另一种方法 p
  • 强制依赖返回类型必须实现类型类

    我试图强制执行一条规则 即类型类的 依赖 返回类型本身必须实现类型类 所以当用户实现IsVec下面的类型类 他们还必须确保返回值getElem方法实现另一个类型类 IsVecElem 我尝试让这项工作看起来像这样 A typeclass f
  • 如果我在两个模块中注册两个具有相同名称的不同指令,最后一个注册会获胜吗?

    在 AngularJS 中 如果我在两个模块中注册两个具有相同名称的不同指令 最后一个注册会获胜吗 IIUC Angular 模块不提供命名空间 另外 Angular 中的模块除了提供方便的注入器配置分组之外还提供其他功能吗 换句话说 你能
  • c# webcontrol - 如何动态加载 html?

    我想使用 c 的 webbrowser 组件加载 HTML 我查阅了 MSDN 但找不到任何可以将字符串 HTML 加载到网络浏览器组件中的内容 我只看到 navigator 方法来加载 URL 所以 如果可能的话我想要以下内容 Strin
  • 即使使用 .loc 后,Pandas 仍然收到SettingWithCopyWarning

    首先 我尝试编写一些如下所示的代码 import numpy as np import pandas as pd np random seed 2016 train pd DataFrame np random choice np nan