Python 尝试替换数据帧中的特定值,但不覆盖它

Python 尝试替换数据帧中的特定值,但不覆盖它,python,pandas,Python,Pandas,我的数据框看起来像这样的orders\u total: price amount side 0 0.003019 100 bids 0 0.003143 100 asks 当我尝试通过执行以下操作替换特定值时: orders_total[orders_total.side == 'asks'].loc[index].amount -= 10 但是当我打印数据帧时,它没有改变。。。知道为什么吗? 谢谢 当您最终得到的是数据帧的副本而不是视图时,您正在尝试就地修

我的数据框看起来像这样的
orders\u total

    price   amount  side
0   0.003019    100 bids
0   0.003143    100 asks
当我尝试通过执行以下操作替换特定值时:

orders_total[orders_total.side == 'asks'].loc[index].amount -= 10
但是当我打印数据帧时,它没有改变。。。知道为什么吗?
谢谢

当您最终得到的是数据帧的
副本而不是视图时,您正在尝试就地修改,因此原始数据帧保持不变。这称为链式索引

要了解有关此检查的详细信息:

您希望使用
.loc
沿两个轴进行索引。这将导致对
\uuuu getitem\uuuu
的单个调用,该调用将返回数据帧的视图,对该视图的更改将反映在原始数据帧上:

orders_total.loc[orders_total.side == 'asks', 'amount'] -= 10

为什么要使用
orders\u total[orders\u total.side=='asks'].loc[index].amount-=10
而不是
orders\u total.loc[index,'amount']-=10
?换句话说,您是在用条件筛选daframe中的行,但最终选择了特定的行。您的解决方案不起作用,因为它正在更改原始数据帧副本的值。啊,好的,我看到我的错误了!的确,它现在起作用了,谢谢!别忘了你也可以投票给答案@Viktor.w:)