Pandas设置有副本警告:试图在DataFrame的切片副本上设置值

cnh2zyt3  于 2023-02-14  发布在  其他
关注(0)|答案(4)|浏览(143)

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

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

第二步:

df.drop(['one', 'two', 'three'], axis=1, inplace=True)

我该怎么补救?

c0vxltue

c0vxltue1#

最简单的解决方法(也可能是最好的编程实践)是不进行就地操作,例如:

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

h9a6wy2h2#

我有一个类似的问题,并修复我做了以下:

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),这就是您收到警告的原因。更多关于复制的信息:
why should I make a copy of a data frame in pandas

x6h2sr28

x6h2sr283#

一种解决方法是删除 inplace=True,然后用途:

df = df.drop(['one', 'two', 'three'], axis=1)
oaxa6hgo

oaxa6hgo4#

如果你正在使用Jupyter Notebook,你可以重新启动并运行。当我得到这个错误时,重新启动并运行,它可以用相同的代码正常工作。

movies.dropna(inplace=True)

相关问题