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

使用loc[duplicate]时使用CopyWarning设置熊猫

洪逸清
2023-03-14

对使用. locs进行索引/切片的赋值有一个一般性问题。

假设以下数据帧df:

df:    
    A   B   C
0   a   b   
1   a   b   
2   b   a   
3   c   c   
4   c   a   

要复制的代码:

df = pd.DataFrame({'A':list('aabcc'), 'B':list('bbaca'), 'C':5*[None]})

我创建df1使用:

df1=df.loc[df.A=='c']

df1:
    A   B   C
3   c   c   
4   c   a   

然后,我根据B中的值,使用以下公式为C赋值:

df1.loc[df1.B=='a','C']='d'

作业正常工作,但我收到一个SettingBackCopy警告。是我做错了什么,还是这是预期的功能?我认为使用. loc可以避免链式赋值。是不是我错过了什么?我正在使用熊猫14.1

共有1个答案

颛孙成益
2023-03-14

@Edchum在OP的评论中回答已经解决了这个问题

df1=df.loc[df.A=='c']

具有

df1=df.loc[df.A=='c'].copy()

这将表明你的意图,而不是提出警告

 类似资料:
  • Python 3.4和Pandas 0.15.0 df是一个数据帧,col1是一列。使用下面的代码,我正在检查值10的存在,并将这些值替换为1000。 这是另一个例子。这一次,我将根据索引更改col2中的值。 这两种情况都会产生以下警告: 最后 这将产生一个类似的警告,并附带一个建议: 我不确定我是否理解警告中指出的讨论。编写这三行代码的更好方法是什么? 请注意,这些操作是有效的。

  • 假设我有下面的数据框,我想将

  • 我试图在将数据帧与另一个数据帧合并后更改数据帧中的值,并遇到一些问题(在合并之前似乎不是问题)。 我正在索引和更改数据帧中的值: 随后,我使用merge连接了两个索引(左外连接)(我意识到left.join(右)也可以)。此后,当我使用iloc执行相同的值分配时,我收到以下警告: 对链接文档的审查不会澄清理解,因此,我是否使用了错误的iloc切片方法?(请记住,出于代码的目的,我需要基于位置的切片

  • 例如,我有一个数据框架: 我希望在时将value 1替换为。所以我想要的结果是: 我可以通过以下代码实现它: 我认为数据量大的时候速度太慢了。我通过<code>来尝试它。loc,但我不知道如何设置值。 我如何通过<code>实现它。loc或其他简单方法?提前谢谢。

  • 问题内容: 首先,我尝试编写一些类似于以下代码的代码: 获取SettingWithCopyWarning之后,我尝试使用.loc: 但是,我仍然收到相同的警告。是什么赋予了? 问题答案: 注意:自大熊猫0.24版本起,已弃用该版本,并将在以后的版本中将其删除。当private属性存在时,下划线表示该属性不是公共API的一部分,因此不应依赖于此属性。因此,展望未来,沉默的唯一正确方法似乎是在全球范围

  • 试图弄清楚为什么下面的函数返回可怕的...这是我的函数,它打算通过引用修改数据框。 不符合要求的行是