You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复制DataFrame中'value'开头列触发SettingWithCopyWarning的疑问

消除SettingWithCopyWarning警告的方案

先确认dfc是独立的DataFrame

如果dfc是从其他DataFrame切片生成的(比如dfc = some_df[['col1']]),它其实是原DataFrame的视图而非独立副本,这种情况下赋值就会触发警告。先把它转成独立副本:

dfc = dfc.copy()

用批量赋值替代循环(更高效)

没必要逐列循环复制,直接一次性筛选目标列赋值,既能解决警告还能提升代码效率:

# 生成要复制的列名列表
target_cols = [f'value_{str(asset)}' for asset in assets]
# 批量复制列到dfc
dfc[target_cols] = df[target_cols].copy()

非要保留循环的话(不推荐)

如果坚持用循环逻辑,要确保赋值的是数据副本而非引用:

for asset in assets:
    col_name = f'value_{str(asset)}'
    dfc.loc[:, col_name] = df[col_name].copy()

警告原因说明

SettingWithCopyWarning的核心问题是你可能在操作DataFrame的视图,而非真正独立的DataFrame对象。上面的方法要么把视图转成独立副本,要么明确复制数据,确保操作的是独立对象,自然就不会触发警告了。

内容的提问来源于stack exchange,提问作者Edu Pvicente

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:48:16