Python Pandas重命名列时触发SettingWithCopyWarning警告求助
处理Pandas rename触发SettingWithCopyWarning的方法
警告原因
你用到的HSN DataFrame是从其他DataFrame切片得到的副本,而非独立的DataFrame对象。当你直接对它执行rename(尤其是启用inplace=True时),Pandas会触发警告——因为你可能在修改一个临时副本,而非预期的数据源,容易出现数据不一致的问题。
解决办法
显式生成独立副本:在创建
HSN的时候就加上.copy(),确保它是独立对象。比如原来的切片代码如果是:HSN = df[df['some_col'] == some_value]改成:
HSN = df[df['some_col'] == some_value].copy()之后再执行
rename操作就不会触发警告。避免使用
inplace=True,直接重新赋值:把原地修改的写法改成生成新对象并赋值给HSN,示例:
原代码:HSN.rename(columns={'HSN Code':'HSN','Quantity':'Total Quantity','Total Amount':'Total Value'}, inplace=True)修改后:
HSN = HSN.rename(columns={'HSN Code':'HSN','Quantity':'Total Quantity','Total Amount':'Total Value'})规范索引获取方式:如果
HSN是通过链式索引(比如df.loc[...][...])得到的,改成用单一.loc操作结合.copy()获取,比如:HSN = df.loc[df['some_col'] == some_value, ['HSN Code', 'Quantity', 'Total Amount']].copy()
内容的提问来源于stack exchange,提问作者Vishal Sharma
相关产品推荐
相关产品推荐

