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在hadoop上跑起来
Jan 27 Python
详解python之简单主机批量管理工具
Jan 27 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
python socket 聊天室实例代码详解
Nov 14 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
python字符串替换re.sub()实例解析
Feb 09 Python
Python实现井字棋小游戏
Mar 09 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
Python中request的基本使用解决乱码问题
Apr 12 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
linux下实现定时执行php脚本
2015/02/13 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
javascript数组去掉重复
2011/05/12 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
Python numpy 常用函数总结
2017/12/07 Python
python中cPickle类使用方法详解
2018/08/27 Python
python3的输入方式及多组输入方法
2018/10/17 Python
Python列表切片操作实例总结
2019/02/19 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
介绍一下游标
2012/01/10 面试题
董事长职责范文
2013/11/08 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
单位委托书范本
2014/04/04 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL