我有一个数据帧:
df = pd.DataFrame({'AKey':[1, 9999, 1, 1, 9999, 2, 2, 2],\
'AnotherKey':[1, 1, 1, 1, 2, 2, 2, 2]})
我想给一个特定的列指定一个新的值,并为该列中具有特定值的每个元素指定一个新的值
假设我想将新值8888
赋给具有值9999
的元素。
我尝试了以下方法:
df[df["AKey"]==9999]["AKey"]=8888
但它返回以下错误:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
所以我试着用loc
df.loc[df["AKey"]==9999]["AKey"]=8888
返回了相同的错误
我很感激你对这个错误的帮助和解释,因为我实在想不起来
您可以这样使用loc:
产生以下输出:
在使用原始代码时,首先要使用以下代码对数据帧进行切片:
然后为切片数据帧的列AKey赋值
换句话说,您是在更新切片,而不是数据帧本身
来自熊猫documentatiom:
分解代码:
df[“AKey”]==9999将返回一个标识行的布尔数组,字符串“AKey”将标识将立即接收新值的列,而不进行切片
好吧,我找到了解决办法。如果我使用逻辑索引来标识列,它就会起作用
但是,我仍然希望得到关于错误的帮助,因为我还不完全清楚为什么Python认为我是在切片而不是索引
相关问题 更多 >
编程相关推荐