使用loc时的Pandas SettingWithCopyWarning

时间:2014-08-25 15:59:57

标签: python pandas indexing

使用.loc对带有索引/切片的作业进行一般性提问。

假设下面的DataFrame,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'

分配有效,但我收到了SettingWithCopy警告。我做错了什么或这是预期的功能?我认为使用.loc会避免链接赋值。有什么东西我错过了吗?我正在使用Pandas 14.1

1 个答案:

答案 0 :(得分:5)

@EdChum对OP的评论回答已经解决了这个问题。 即替换

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

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

这将明确表达您的意图而不会发出警告