Python Pandas DataFrame SettingWithCopyWarning 报错代码修改问询
问题解决方法
报错原因
这个警告由链式索引(代码中连续使用[][]两次取值的写法)触发:哪怕你已经对df做了拷贝,pandas的静态检查无法100%确认你操作的是独立副本,所以抛出警告,该写法也存在意外修改原始数据的潜在风险。
第187行修改方案
替换链式索引为pandas官方推荐的.loc索引写法,修改后代码如下:
df.loc[df['trade_status'] == 'DONE', 'trade_status'] = 'FILLED'
.loc的第一个参数为行筛选条件,第二个参数为要修改的目标列名,是原地修改DataFrame值的标准写法,可直接消除该警告。
其他可选优化(建议修改,避免后续隐患)
当前第186行的写法也存在同样的链式索引风险,建议同步修改为.loc写法:
df.loc[:, 'date_time'] = df['date_time'].dt.date
如果仍有警告,可将185行的拷贝逻辑明确指定为深拷贝,生成完全独立的副本,彻底切断和原input_df的关联:
df = input_df.copy(deep=True)
不推荐的临时处理方案:如果确认操作的是独立副本,只想屏蔽警告,可在代码前添加配置
pd.set_option('mode.chained_assignment', None),但优先使用正确的索引写法更稳妥。
内容的提问来源于stack exchange,提问作者Coding Baby
相关产品推荐
相关产品推荐

