将fillna()与当前行中的值一起使用时的SettingWithCopyWarning

时间:2019-01-17 17:00:30

标签: pandas

以下代码按如下方式变换表:

     col1  col2
0       1   3.0
1       2   4.0
2    C345   NaN
3  A56665   4.0
4   34553   NaN
5  353535   4.0

     col1   col2
0       1      3
1       2      4
2    C345   C345
3  A56665      4
4   34553  34553
5  353535      4

import pandas as pd

d = {'col1': [1, 2, "C345", "A56665", 34553, 353535], 'col2': [3, 4,None, 4,None, 4]}
df = pd.DataFrame(data=d)
df.col1.astype(str)

print(df)

df.col2.fillna(df.col1, inplace=True)
print(df)

但是,在将这种方法应用于大型数据集时,我得到了SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame。我在做什么错/不是按预期的方式做的?

1 个答案:

答案 0 :(得分:0)

尝试像loc一样使用df.loc[:, 'col2'].fillna(df.col1, inplace=True)

要为单个数据框关闭SettingWithCopyWarning,请使用

df.is_copy = False

或者,

df = df.copy()