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

处理Kaggle泰坦尼克数据时,Pandas设置部分数据触发SettingWithCopyWarning求助

解决泰坦尼克数据集修改Survived字段时的SettingWithCopyWarning警告

嘿,我太懂你遇到这个警告的烦躁了——明明跟着推荐用了loc方法,怎么还是跳出SettingWithCopyWarning?别慌,我来给你掰扯清楚原因和解决办法。

问题到底出在哪?

你写的y = train[["Survived"]]这行代码,并没有生成一个全新的独立DataFrame,它只是原train数据集的一个视图。简单说就是,y和train底层共享着同一份数据。当你用loc修改y的时候,Pandas会犯嘀咕:你到底是只想改这个临时视图,还是不小心想间接修改原train数据?为了防止你误操作污染原始数据集,它就抛出了这个警告提醒你。

一招解决:创建独立副本

核心思路就是让y成为完全独立的DataFrame,和原train彻底分家。只需要在创建y的时候加上.copy()方法就行:

import pandas as pd
train = pd.read_csv('data/train.csv')
# 加上.copy()生成独立副本,彻底和原数据解绑
y = train[["Survived"]].copy()
# 现在再用loc修改就不会有警告了
y.loc[y["Survived"] == 0, "Survived"] = -1

额外小技巧:直接修改原数据

如果你本来就想直接修改原train里的Survived字段,那也可以跳过创建y这一步,直接在原数据集上操作:

train.loc[train["Survived"] == 0, "Survived"] = -1

这样操作目标明确,Pandas自然不会再抛出警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:00