pandas之DataFrame格式给满足对应条件的某一列进行赋值

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]
在这里插入图片描述

  • 29
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值