Pandas SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值

Dan*_*rty 4 pandas

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

  1. df.rename(columns = {'one':'one_a'},inplace = True)

  2. df.drop([''','两个','三个'],axis = 1,inplace = True)

我该如何解决?

小智 6

解决这个问题的一种方法是删除inplace=True,然后使用:

df = df.drop(['one', 'two', 'three'], axis=1)
Run Code Online (Sandbox Code Playgroud)


max*_*moo 5

最简单的解决方法(可能是良好的编程习惯)是不执行就地操作,例如

df2 = df.rename(columns={'one':'one_a'})
Run Code Online (Sandbox Code Playgroud)

  • 仅出于重命名目的而保存数据集的多个副本是一种良好的编程习惯吗?数据集的大小会影响你的答案吗? (20认同)

tup*_*pan 5

我有一个类似的问题,为了解决我做了以下事情:

new_df = df.copy()
new_df.rename(columns={'one':'one_a'}, inplace=True)
new_df.drop(['one', 'two', 'three'], axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)

或者你可以做

df.is_copy = False
Run Code Online (Sandbox Code Playgroud)

您可能正在使用原始 DF 的副本(例如:您在此之前操作了 DF),这就是您收到警告的原因。更多关于副本:

我为什么要在熊猫中制作数据框的副本

  • 这可能是我避免这些警告的新策略——大量的“.copy()”标记在我的操作末尾 (2认同)