今天给df筛选出来的数据赋值的时候遇到赋值后没改变的情况,搞了好久终于搞明白了

背景:

我的dataframe有一列是“记录序号”,是一列连续的整数

然后我按条件找到了我要改值的行的一系列整数,分别以start和last为上下界

我就把“记录序号”处于start和last之间的df取出来,再在取出来的里得到列名为"容量"的所有值

这些值我用同样长度的一维array赋值

可是赋值完,再打印出这些“记录序号”处于start和last之间的行,里面的值还是0

有问题的代码如下:


可以看到值被赋完后没有变

其实是因为df[:]返回的是个copy,所以当然没法改变原来的值
验证如下:

两个id不一样

在stackoverflow发现一个可用的赋值方法

修改后的代码如下: