文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pandas:如何修改DataFrame中某一列的值?

2023-09-01 15:33

关注

写这篇博客主要是因为在修改DataFrame列值的时候经常遇到bug,但到目前还没把这种错误复现出来。

  DataFrame是Pandas中的主要数据结构之一,本篇博客主要介绍如何DataFrame中某一列的值进行修改。

1 常规方法

  这部分主要介绍修改DataFrame列值的常规方法。为了方便后续说明先构建如下数据:

import pandas as pdimport numpy as npdf=pd.DataFrame([['A',1],['B',2],['C',5],['D',4],['E',10],['F',13],['G',8]],                columns=['col_1','col_2'],                index=list('abcdefg'))

df结果如下:
在这里插入图片描述

使用一个常量对DataFrame列中的数据进行修改时,代码举例如下:

df1=df.copy()df1['col_1']='H'df1.loc[['a','c','d'],'col_2']=100 #将指定索引的列值进行修改df1.iloc[4:,-1]=200 

df1的结果如下:
在这里插入图片描述

当需要对DataFrame列中的多个值进行修改时,可以使用List或array等变量型数据来对其进行修改。具体代码如下:

df2=df.copy()df2['col_1']=list(range(7))df2.loc[df2.index<='d','col_2']=np.array([15,20,25,30])df2.iloc[4:,-1]=np.array([10,5,0])

df2的结果如下:
在这里插入图片描述

除了以上两种数据类型之外,还可以使用Series型数据来修改DataFrame列的值。但使用这种方法时,需要索引对齐,否则会出错。具体举例如下:

df3=df.copy()df3['col_1']=pd.Series([1,2,3,4,5,6,7]) #索引不对齐时不会报错,但没有成功修改列值。df3.loc[['a','b','c'],'col_2']=pd.Series([100,200,300],index=list('abc'))df3.iloc[3:,-1]=pd.DataFrame([[4000],[5000],[6000],[7000]],index=list('cdef'))

其结果如下:
在这里插入图片描述

2. replace方法

  DataFrame对象自带的方法replace()也可以实现列值的修改。该方法中的参数主要有以下几个:

参数作用
to_replace确定需要修改列值的数据。可接受的数据类型有:str, regex, list, dict, Series, int, float, or None
value指定修改后的值。可接受的数据类型有:scalar, dict, list, str, regex, default None
inplace是否本地置换
limit指定前后填充的最大次数
regex正则表达式符号。如果需要在to_replace中使用字符串形式的正则表达式对数据进行筛选的话,需要将其设置为True。
method填充方式。‘pad’, ‘ffill’, ‘bfill’, None

创建如下数据,具体如下:

df=pd.DataFrame([['A','A'],['B','B'],['C',5],['D',4]],                columns=['col_1','col_2'],                index=list('abcd'))

df的结果如下:
在这里插入图片描述

#A替换为aaa,B替换为bbb,4替换为100df_1=df.replace(to_replace=['A','B',4],value=['aaa','bbb',100])#将A替换为AAAAdf_2=df.replace(to_replace='A',value='AAAA')#将A替换为AAAAA,5替换为2000df_3=df.replace(to_replace={"A":'AAAAA',5:2000})

其结果如下:
在这里插入图片描述

#对于col_1列:将A替换为1,B替换为2#对于col_2列:将A替换为100,B替换为200df_4=df.replace({"col_1":{'A':1,'B':2},"col_2":{"A":100,"B":200}})

其结果如下:
在这里插入图片描述

#将A\B替换成newdf_5=df.replace(to_replace=r'[AB]',value='new',regex=True)

其结果如下:
在这里插入图片描述

来源地址:https://blog.csdn.net/yeshang_lady/article/details/127619031

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯