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字符串处理函数简明总结
Apr 13 Python
简单介绍Python中的decode()方法的使用
May 18 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python实现字典去除重复的方法示例
Jul 31 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
对Python中画图时候的线类型详解
Jul 07 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
Python Pandas 删除列操作
Mar 16 Python
Golang Web 框架Iris安装部署
Aug 14 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
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
JS实现简单的Canvas画图实例
2013/07/04 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python文件拆分与重组实例
2018/12/10 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
销售总监工作职责
2013/11/21 职场文书
职工趣味运动会方案
2014/02/10 职场文书
先进集体获奖感言
2014/02/13 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
春节联欢会主持词
2014/03/24 职场文书
事业单位鉴定材料
2014/05/25 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
房产证明范本
2015/06/19 职场文书
教师读书笔记
2015/06/29 职场文书
python爬虫--selenium模块
2021/03/31 Python
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android