Pandas转换列类型时持续触发SettingWithCopyWarning的解决方法
解决Pandas SettingWithCopyWarning的有效方案
- 先排查问题根源:运行
print(kl._is_view),如果输出True,说明kl是其他DataFrame的视图/切片,并非独立副本——这就是警告的核心原因。 - 最直接的解决办法:先把
kl转为独立副本,再执行类型转换,用你习惯的写法即可:# 生成独立副本 kl = kl.copy() # 执行类型转换 kl['SAP'] = kl['SAP'].astype(str) # 或者用pd.StringDtype() kl['SAP'] = kl['SAP'].astype(pd.StringDtype()) - 若不想额外复制一步,也可以用
assign方法直接生成新的DataFrame(自动规避视图问题):kl = kl.assign(SAP=kl['SAP'].astype(str)) - 你之前的方法无效的原因:不管改列名还是用
.loc,都是在视图上操作,只要没脱离视图的本质,Pandas就会触发警告。必须先让kl成为独立副本,才能彻底解决问题。
内容的提问来源于stack exchange,提问作者MarkBreugelmans
相关产品推荐
相关产品推荐

