pandas数据帧切片警告的副本

问题描述 投票:0回答:1

我对熊猫很新,并且在一大段代码中得到了臭名昭着的SettingWithCopyWarning。我把它归结为以下内容:

import pandas as pd
df = pd.DataFrame([[0,3],[3,3],[3,1],[1,1]], columns=list('AB'))
df
df = df.loc[(df.A>1) & (df.B>1)]
df['B'] = 10

当我运行这个时,我收到警告:

main:1:SettingWithCopyWarning:尝试在DataFrame的切片副本上设置值。尝试使用.loc [row_indexer,col_indexer] = value

奇怪的是,如果我放弃“df”线,它会在没有警告的情况下运行。这是预期的行为吗?

通常,如果我想通过各列的值过滤DataFrame,我是否需要执行copy()以避免SettingWithCopyWarning?

非常感谢

python pandas
1个回答
0
投票

假设您的DataFrame如下所示,这将避免使用SettingWithCopyWarning

有一个熊猫开发者Jeff建议的github Discussion和解决方案:)

df
   A  B
1  3  3

最好用这种方式。

df1['B'] = df['B'].replace(3, 10)
df1
   A   B
1  3  10
© www.soinside.com 2019 - 2024. All rights reserved.