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

DataFrame切片副本赋值警告及KeyError问题求助

问题分析与解决方案

关于SettingWithCopyWarning警告

你最初的代码出现警告,是因为pandas不推荐通过home_data['Street'][index]这种链式索引的方式修改DataFrame数据——这种写法可能会意外修改到数据的副本而非原数据,所以触发警告。

关于KeyError: 'Pave'

虽然你确认'Pave'同时存在于字典和home_data['Street']中,但大概率是字符串不一致导致的:比如字典里的键是带空格的' Pave',而DataFrame里是'Pave';或者大小写不同(比如'pave' vs 'Pave')。可以用set(home_data['Street']) - set(dictionnaire.keys())快速找出不匹配的元素。

正确的实现方式

完全不需要手动循环,用pandas的map方法就能高效完成映射,还能避免所有问题:

# 构建映射字典(用字典推导式更简洁)
dictionnaire = {valeur: i+1 for i, valeur in enumerate(streets)}
# 直接映射替换列值
home_data['Street'] = home_data['Street'].map(dictionnaire)

如果担心有不匹配的元素导致KeyError,可以用fillna处理,或者改用replace方法(不匹配的元素会保持原值):

home_data['Street'] = home_data['Street'].replace(dictionnaire)

如果一定要用循环修改,必须用loc来确保操作的是原数据:

dictionnaire = {valeur: i+1 for i, valeur in enumerate(streets)}
for index, elem in home_data['Street'].items():
    home_data.loc[index, 'Street'] = dictionnaire[elem]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:52:24