经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
pandas中df.rename()的具体使用
来源:jb51  时间:2022/8/15 16:59:38  对本文有异议

df.rename()用于更改行列的标签,即行列的索引。可以传入一个字典或者一个函数。在数据预处理中,比较常用。

官方文档:

DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)

参数解释:

创建实例

  1. import pandas as pd
  2. df = pd.DataFrame({'name':['zhao','qian','sun','wang'],'mark':[150,122,155,132],'gender':['female','female','male','male']})
  3. df

    name    mark    gender
0    zhao    150        female
1    qian    122        female
2    zhou    155        male
3    wang    132        male

mapper:dict or function

映射关系,可以是字典,也可以是一个函数。

  1. df.rename({0:111})
  2. ?? ?name?? ?mark?? ?gender
  3. 111?? ?zhao?? ?150?? ??? ?female #行索引从0变为111
  4. 1?? ?qian?? ?122?? ??? ?female
  5. 2?? ?zhou?? ?155?? ??? ?male
  6. 3?? ?wang?? ?132?? ??? ?male
  7.  
  8. df.rename(lambda x: x+11) #参数也可以是函数,索引都加了11
  9. ?? ?name?? ?mark?? ?gender
  10. 11?? ?zhao?? ?150?? ??? ?female
  11. 12?? ?qian?? ?122?? ??? ?female
  12. 13?? ?zhou?? ?155?? ??? ?male
  13. 14?? ?wang?? ?132?? ??? ?male

index、columns、axis:

这3个参数作用类似,dataframe中有行和列两个方向,在改名时,需要指明改名的是行还是列(默认是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 1)的效果是一样的

  1. df.rename(lambda x: x+'11',axis=1)
  2. ?? ?name11?? ?mark11?? ?gender11 ?#列索引都加了11name变为name11
  3. 0?? ?zhao?? ?150?? ??? ?female
  4. 1?? ?qian?? ?122?? ??? ?female
  5. 2?? ?zhou?? ?155?? ??? ?male
  6. 3?? ?wang?? ?132?? ??? ?male
  7.  
  8. df.rename(columns=lambda x: x+'11')#等价于上面,写法更简洁直观
  9. ?? ?name11?? ?mark11?? ?gender11
  10. 0?? ?zhao?? ?150?? ??? ?female
  11. 1?? ?qian?? ?122?? ??? ?female
  12. 2?? ?zhou?? ?155?? ??? ?male
  13. 3?? ?wang?? ?132?? ??? ?male

copy:bool,default = True

默认为True,效果不清楚。。。文档就一句话,与会复制底层数据(also copy underlying data), 等一个课代表解答一下。

inplace:bool,default False

将结果返回赋值给原变量,无需再次将结果赋值给新变量。即df.rename(inplace=True)之后,df的值发生改变(pandas中好多方法都有这个参数,此处就演示了)

level int,level name,default none

针对多层索引,指定需要改名字的索引具体是哪一个。

  1. df1 = pd.DataFrame([10,11,12,13],index=[['a','a','b','b'],[1,2,3,4],[4,3,2,1]],columns=['tt'])
  2. df1
  3. tt #前三列都为索引
  4. a 1 4 10
  5. 2 3 11
  6. b 3 2 12
  7. 4 1 13
  8. df1.rename(index={1:'dd'})
  9. tt#索引中所有的1都变成了dd
  10. a dd 4 10
  11. 2 3 11
  12. b 3 2 12
  13. 4 dd 13
  14. df1.rename(index={1:'dd'},level=1)
  15. tt#只有第2列索引改为dd(从0开始计数)
  16. a dd 4 10
  17. 2 3 11
  18. b 3 2 12
  19. 4 1 13

errors:{‘ignore’, ‘raise’}, default ‘ignore’

发生错误的处理方式,ignore为忽略,raise为报错。比如改名字是,如果传入的参数中包含索引列没有的值,就会报错,ignore或者raise来决定错误的处理方式

  1. df1
  2. tt #前三列都为索引
  3. a 1 4 10
  4. 2 3 11
  5. b 3 2 12
  6. 4 1 13
  7. df1.rename(index={11:'dd'},level=1,errors='raise')
  8. KeyError: '[11] not found in axis'#报错,11没在索引内

到此这篇关于pandas中df.rename()的具体使用的文章就介绍到这了,更多相关pandas df.rename()内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号