如何处理Pandas中使用inplace方法引发的FutureWarning
解决pandas替换空值并删除空行的FutureWarning警告
原代码存在两个问题:一是链式索引配合inplace=True触发了pandas的FutureWarning,二是dropna使用inplace=True时会返回None,导致df1被赋值为无效值。
修改方案1:生成新的DataFrame(不修改原df)
# 替换空值为nan,生成新的Series赋值回原列 df['CellNRARFCN'] = df['CellNRARFCN'].replace('', np.nan) # 生成新的DataFrame存储删除空行后的结果 df1 = df.dropna(subset=['CellNRARFCN'])
修改方案2:原地修改原DataFrame
如果不需要保留原df,可以直接在原对象上操作:
# 用df.replace方法指定列进行替换,避免链式索引 df.replace({'CellNRARFCN': ''}, np.nan, inplace=True) # 原地删除空行,无需赋值给变量 df.dropna(subset=['CellNRARFCN'], inplace=True)
关键说明
- 避免
df['col'].method(inplace=True)这种链式操作,改用df['col'] = df['col'].method()直接赋值,或者使用df.replace()这种支持指定列的DataFrame级方法,确保操作作用在原对象上。 - 当使用
inplace=True时,方法不会返回新的DataFrame,不要将其赋值给变量,否则会得到None。
内容的提问来源于stack exchange,提问作者syed
相关产品推荐
相关产品推荐

