当前位置: 首页 > 知识库问答 >
问题:

设置拷贝警告,即使使用loc(?)[重复]

蓬英逸
2023-03-14

我得到的SettingBackCopyWarning错误的情况下,我不会期望他们:

N.In <38>: # Column B does not exist yet
N.In <39>: df['B'] = df['A']/25
N.In <40>: df['B'] = df['A']/50

/Users/josh/anaconda/envs/py27/lib/python2.7/site-packages/pandas/core/indexing.py:389: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
  self.obj[item] = s

N.In <41>: df.loc[:,'B'] = df['A']/50

/Users/josh/anaconda/envs/py27/lib/python2.7/site-packages/pandas/core/indexing.py:389: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
  self.obj[item] = s

为什么会发生在案例1和2中?

共有2个答案

家经纶
2023-03-14

另一种应抑制警告的解决方案

df = df.copy()
df['B'] = df['A']/25
df['B'] = df['A']/50
爱茂勋
2023-03-14

在情况1中,df['A']创建df的副本。正如熊猫留档所解释的,这可能会导致链接时的意外结果,从而引发警告。案例2看起来是正确的,但是假阳性是可能的:

警告:链接分配警告/例外旨在通知用户可能无效的分配。可能存在误报;意外报告链式作业的情况。

要关闭单个数据帧的CopyWarning设置,请使用

df.is_copy = False

若要完全关闭链式分配警告,请使用

options.mode.chained_assignment = None
 类似资料:
  • 对使用. locs进行索引/切片的赋值有一个一般性问题。 假设以下数据帧df: 要复制的代码: 我创建df1使用: 然后,我根据B中的值,使用以下公式为C赋值: 作业正常工作,但我收到一个SettingBackCopy警告。是我做错了什么,还是这是预期的功能?我认为使用. loc可以避免链式赋值。是不是我错过了什么?我正在使用熊猫14.1

  • 我遇到了麻烦,而试图设置一个准确的警报,只有时间选择器。我设置了一个带有如下处理程序的时间选择器: 计时器 不幸的是,当这样做时,警报会立即播放。我也试过用am.setalarmclock但是我不知道如何用它来使用RTC时间,你能帮我吗? 我已经读了很多线程,就像我正在尝试设置警报在特定的时间使用警报管理器,但警报立即启动?并从DatePicker和TimePicker中设置AlarmManage

  • 主要内容:到底是浅拷贝还是深拷贝对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: b 和 obj2 都是以拷贝的方式初始化的,具体来说,就是将 a 和 obj1 所在内存中的数据按照二进制位(Bit)复制到 b 和 obj2 所在的内存, 这种默认的拷贝行为就是 浅拷贝 ,这和调用 memcpy() 函数的效果非常类似。 对于简单的类,默认的拷贝构造函数一般就够用了,我们也没有必要再显式地定义一

  • 浅拷贝 对于对象或数组类型,当我们将a赋值给b,然后更改b中的属性,a也会随着变化。 也就是说,a和b指向了同一块堆内存,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝。 深拷贝 那么相应的,如果给b放到新的内存中,将a的各个属性都复制到新内存里,就是深拷贝。 也就是说,当b中的属性有变化的时候,a内的属性不会发生变化。 参考链接: 深拷贝与浅拷贝的实现(一) javaScript中浅拷

  • 我收到这个警告: 警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查EventsTable的渲染方法。有关更多信息,请参阅fb.me/react-warning-keys。 react-runtime-dev.js?8fefd85d334323f8baa58410bac59b2a7f426ea7: 21998警告:数组或迭代器中的每个孩子都应该有一个唯一的“键”道具。检查事件的渲染方法。

  • 本文向大家介绍详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝),包括了详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)的使用技巧和注意事项,需要的朋友参考一下 1.序列化实现 2.主代码 测试了一下时间: 输出: -------浅拷贝--------- cd cd 1 name : 我 | age : 13 | conte