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中列表生成式的用法
Mar 31 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
利用Python读取文件的四种不同方法比对
May 18 Python
python如何实现内容写在图片上
Mar 23 Python
python机器学习之贝叶斯分类
Mar 26 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
python实现简单登陆流程的方法
Apr 22 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
详解python itertools功能
Feb 07 Python
python实现低通滤波器代码
Feb 26 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
php数据访问之查询关键字
2016/05/09 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
js 数据类型转换总结笔记
2011/01/17 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
工程师自我评价怎么写
2013/09/19 职场文书
服装厂厂长岗位职责
2013/12/27 职场文书
餐饮加盟计划书
2014/01/10 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
入党积极分子群众意见
2015/06/01 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
Java输出Hello World完美过程解析
2021/06/13 Java/Android
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL