1、在python中,我们常常遇到这种需求,就是需要给某DataFrame数据格式中满足某一条件的数据进行列表赋值,对于这种需求,如何赋值呢?下面进行测试。

2、数据构造

本次测试所构造数据如下:
在这里插入图片描述

3、数值修改

在这里插入图片描述
对于上面数据,我现在想将id为5的数据的value对应列修改成6,我们怎么改呢?
大多同学可能都会犯以下错误:使用如下语法:data[data.id == 5].value = 10
但是运行之后会发现,该列的数值并没有被修改:

在这里插入图片描述
这是应为你通过id进行赛选数据之后再取value的时候,此时变量已经不是在操作原来的那张表了,而是在操作一个新的变量data[data.id == 5],因此无法进行赋值:

4、正确做法

1、通过切片的方式进行赋值:

思路:首先data[data.id == 5]将数据取出来,然后在取该变量的index,data[data.id==5].index,注意此时数据类型为Int64Index格式,如下,为此我们将其转换成列表,data[data.id ==5].index.tolist(),此时就获取了所有该id的索引值。
在这里插入图片描述
data[data.id ==5].index.tolist() 输出:
在这里插入图片描述
获取所有的index之后我们就可以使用loc函数了:如下:
data.loc[data[data.id == 5].index.tolist(),‘value’] = 10

在这里插入图片描述
此时可以看到已经全部修改为10

2、此外,还可以使用相同长度的list进行对其修改

如我还是要讲上面的3个id值为5的数据分别修改为11,12,13:我们可以这样使用:
在这里插入图片描述
此时可以看到,值已经修改过来了。

3、还可以通过切片对连续数据进行修改:如下

如,我要将前面连续4组数据修改为1,2,3,4:我们可以这样使用
data[:4].value = [1,2,3,4]
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐