pandas修改DataFrame列名的实现方法


Posted in Python onFebruary 22, 2019

提出问题

存在一个名为dataset的DataFrame

>>> dataset.columns
Index(['age', 'job', 'marital', 'education', 'default', 'housing', 'loan',
    'contact', 'month', 'day_of_week', 'duration', 'campaign', 'pdays',
    'previous', 'poutcome', 'emp.var.rate', 'cons.price.idx',
    'cons.conf.idx', 'euribor3m', 'nr.employed', 'y'],
   dtype='object')

现在, 我要将其columns名字改为:

>>> new_columns
Index(['age_0', 'job_1', 'marital_2', 'education_3', 'default_4', 'housing_5',
    'loan_6', 'contact_7', 'month_8', 'day_of_week_9', 'duration_10',
    'campaign_11', 'pdays_12', 'previous_13', 'poutcome_14',
    'emp.var.rate_15', 'cons.price.idx_16', 'cons.conf.idx_17',
    'euribor3m_18', 'nr.employed_19', 'y_20'],
   dtype='object')

该如何操作?

解决

一.通过DataFrame.columns类的自身属性修改:

1.无脑赋值直接修改

>>> # 先解决`new_columns`的推导问题
>>> # 列表推导
>>> new_columns_list = [column_str+'_'+str(i) for i ,column_str in enumerate(dataset.columns)]
>>> # 类型转换
>>> new_columns = pd.core.indexes.base.Index(new_columns_list)
>>> dataset.columns = new_columns

2.通过.map(mapper, na_action=None)函数来修改

>>> # 注:mapper 多运用 lambda 表达式
>>> # 但我似乎没有找到在 lambda 表达式中改变两个值的方法
>>> # 所以只能蹩脚地用一个全局变量i, 和映射函数mapper()
>>> # 希望大家能帮我找到方法

>>> i = 0
>>> def mapper(x): # 映射函数即 mapper
  global i
  x += '_' + str(i)
  i += 1
  return x
>>> dataset.columns.map(mapper)

3.参考博客用到了DataFrame.columns.str对象

用help(DataFrame.columns.str)翻遍了文档,

也没能找到可以被我拿来套用的方法, 想着抽时间把这段文档翻译一下

二.通过DataFrame.rename()函数来修改

1.暴力字典法(好处:可以只修改特定的列)

>>> # 此处先用字典推导法
>>> new_dict = {
  key:key+'_'+str(i)
  for i, key in enumerate(dataset.columns)
  }
>>> dataset.rename(columns=new_dict, inplace=True)

2.映射修改法

>>> # 原博文依然用到了 lambda 表达式
>>> # 我就再生搬硬套一次, 把上面的复制过来
>>> # 蹩脚地用一个全局变量i, 和映射函数mapper()

>>> i = 0
>>> def mapper(x): # 映射函数即 mapper
  global i
  x += '_' + str(i)
  i += 1
  return x
dataset.rename(columns=mapper, inplace=True)

稍微总结一下 : 字典推导和列表推导的使用方法很类似, 最大的区别是选择中括号还是大括号

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
Python字符串切片操作知识详解
Mar 28 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
浅析Git版本控制器使用
Dec 10 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
Python 图片添加美颜效果
Apr 28 Python
pyhanlp安装介绍和简单应用
Feb 22 #Python
Python3.7 dataclass使用指南小结
Feb 22 #Python
Python文件读写常见用法总结
Feb 22 #Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 #Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 #Python
浅谈python3.6的tkinter运行问题
Feb 22 #Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 #Python
You might like
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
Bootstrap响应式表格详解
2017/05/23 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
bat和python批量重命名文件的实现代码
2016/05/19 Python
django2 快速安装指南分享
2018/01/05 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
生物技术毕业生自荐信
2013/10/23 职场文书
自考自我鉴定范文
2013/10/30 职场文书
测试工程师岗位职责
2013/11/28 职场文书
关于教师节的广播稿
2014/09/10 职场文书
销售助理岗位职责
2015/02/11 职场文书
食品药品安全责任书
2015/05/11 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
Python作用域和名称空间的详细介绍
2022/04/13 Python