即使使用 .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 的相关文章

  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 计算温度的偏导数(温度的水平平流)

    我想知道哪种方法计算x和y方向温度的偏导数 温度的水平平流 最正确 第二个代码使用温度 纬向风和经向风的数据矩阵 提取温度 T 纬向风分量 u 和经向风分量 v 的数据 import matplotlib pyplot as plt imp
  • cv2.face.mindistancepredictcollector() 错误

    我已经安装了带有额外模块的 opencv 3 1 0 但是当我尝试使用 gt gt gt s cv2 face MinDistancePredictCollector 它返回一个错误 Traceback most recent call l
  • Python中使用cv2获取当前视频播放位置

    我正在尝试使用 CV2 和 Python 从播放视频中获取当前播放时间位置 如果可能 以毫秒为单位 目前我正在使用此示例代码来播放视频文件 import cv2 import numpy as np file name 2 mp4 wind
  • Pygame 玩家精灵没有出现

    我一直在为学校计算机课做这个项目 但无法让玩家精灵出现 有人可以帮忙吗 当我运行主游戏循环时 除了玩家精灵之外 所有内容都正确显示 它应该由于箭头输入而在屏幕上移动并受到重力的影响 当我删除图像并仅使用对象类和矩形时 该代码也有效 impo
  • 如何更改条形图上的 y 轴限制?

    我有一个df 我从中索引了europe n我绘制了一个条形图 europe n r 5 c 45 looks like this df Country string df Population numeric 变量 plt bar df C
  • Weasyprint 在调用 write_pdf 时获得未定义的属性:“AttributeError:‘PosixPath’对象没有属性‘read_text’”

    我正在 ubuntu 18 04 上运行 weasyprint 项目 并尝试创建一个 pdf 当我尝试设置页脚图像时 问题就开始了 我正在 python 3 6 7 上运行 这是我调用 weasyprint 的代码 import sys i
  • int 对象在尝试对数字的数字求和时不可迭代? [复制]

    这个问题在这里已经有答案了 我有这个代码 inp int input Enter a number for i in inp n n i print n 但它抛出一个错误 int object is not iterable 我想通过将每个
  • 如何最好地将包含列表或元组的 Pandas 列提取到多个列中[重复]

    这个问题在这里已经有答案了 我不小心用错误重复的链接关闭了这个问题 这是正确的 Pandas 将列表的列拆分为多列 https stackoverflow com questions 35491274 pandas split column
  • 在 (i)python 脚本中从 jupyter 内核获取输出

    我想从单个 ipython 会话中打开多个内核 在这些内核上运行代码 然后收集结果 但我不知道如何收集结果 甚至不知道如何查看 stdout stderr 我怎样才能做这些事情呢 到目前为止我所得到的 我已经使用如下代码管理了前两个步骤 打
  • 在 Docker 容器内运行时,如何自动在 API 路由文件中进行 FASTAPI 拾取更改?

    我通过 docker 运行 FastApi 在 docker compose 中创建一个名为 ingestion data 的服务 我的 Dockerfile FROM tiangolo uvicorn gunicorn fastapi p
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • 尝试修复我的功能

    我正在开发一个函数 我必须返回一个元组 其中第一个参数是最大数字的 str 第二个参数是 int 列表 这是示例以及我为该函数编写的内容 投票 G G N G C G 1 3 0 1 您必须将最大值的位置映射到正确的一方 parties N
  • Python unittest - 与assertRaises相反?

    我想编写一个测试来确定在给定情况下不会引发异常 测试是否有异常很简单is上调 sInvalidPath AlwaysSuppliesAnInvalidPath self assertRaises PathIsNotAValidOne MyO
  • 避免在列表理解中计算相同的表达式两次[重复]

    这个问题在这里已经有答案了 我在列表理解中使用一个函数和一个 if 函数 new list f x for x in old list if f x 0 令我恼火的是这个表达f x 在每个循环中计算两次 有没有办法以更清洁的方式做到这一点
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • Python pip 安装错误 [SSL: CERTIFICATE_VERIFY_FAILED]

    我已经尝试解决这个问题有一段时间了 由于某种原因 我陷入了 ssl 问题 并且不知道发生了什么 问题 我已经安装了 python2 7 和 easy install2 7 但是当尝试使用 easy install2 7 安装 pip 时 出

随机推荐

  • 如何在 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