Pandas SettingWithCopyWarning:试图在数据帧切片的副本上设置值

Pandas SettingWithCopyWarning:试图在数据帧切片的副本上设置值,pandas,Pandas,在以下情况下,我不断收到主题中的警告: rename(columns={'one':'one_a'},inplace=True) df.drop(['one','two','three'],轴=1,原地=True) 如何修复?最简单的修复(可能是良好的编程实践)是不执行就地操作,例如: df2 = df.rename(columns={'one':'one_a'}) 我有一个类似的问题,为了解决这个问题,我做了以下工作: new_df = df.copy() new_df.rename(col

在以下情况下,我不断收到主题中的警告:

  • rename(columns={'one':'one_a'},inplace=True)

  • df.drop(['one','two','three'],轴=1,原地=True)

  • 如何修复?

    最简单的修复(可能是良好的编程实践)是不执行就地操作,例如:

    df2 = df.rename(columns={'one':'one_a'})
    

    我有一个类似的问题,为了解决这个问题,我做了以下工作:

    new_df = df.copy()
    new_df.rename(columns={'one':'one_a'}, inplace=True)
    new_df.drop(['one', 'two', 'three'], axis=1, inplace=True)
    
    或者你可以

    df.is_copy = False
    
    您可能正在使用原始DF的副本(例如:在此之前您正在操纵DF),这就是您收到警告的原因。有关副本的更多信息:


    如果我这样做了怎么办?df=df.rename(columns={'one':'one_a'}),如果我保持原样,在这种情况下可以忽略警告吗?可以忽略警告,但我建议您为
    df.columns
    指定一个新列名列表。基本上,
    df.columns=['list','of','new','names']
    。对于
    df.drop
    ,最好写
    df=df.loc[:,['columns','to','keep']].copy()
    @VinceBowdren嗯,我想这是一个品味问题,但就地操作与此不相适应,这可能是我避免这些警告的新策略——大量的
    .copy()
    标记到我的操作结束