本文主要是介绍【学习心得】Pandas报错:“试图在来自数据帧的切片副本上设置值”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述与分析
报错:“A value is trying to be set on a copy of a slice from a DataFrame”
# data是某个DataFrame# 创建一个判断条件
cond = (data['workclass'] == '?')# 想根据判断条件,修改DataFrame中的某些值
data['workclass'][cond] = 'unknown'
这个错误意味着你正在尝试修改一个来自DataFrame切片的副本,而非直接修改原始DataFrame。在Pandas中,某些操作会返回DataFrame的一个视图(view)而非副本(copy),直接修改这个视图有时会导致上述错误。
解决方案
推荐的做法是使用.loc
或.iloc
访问器来确保您是在操作原始DataFrame上的数据,而不是其副本。
# 判断条件
cond = data['workclass'] == '?'# 这样写可以解决错误
data.loc[cond, 'workclass'] = 'unknown'
.loc
或.iloc
根据标签(布尔条件或索引)选择行和列后可以直接对选中的数据进行赋值。
这篇关于【学习心得】Pandas报错:“试图在来自数据帧的切片副本上设置值”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!