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实现网站文件的全备份和差异备份
Nov 30 Python
python实现类的静态变量用法实例
May 08 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Python实现的简单计算器功能详解
Aug 25 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
tensorflow 查看梯度方式
Feb 04 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
详解python polyscope库的安装和例程
Nov 13 Python
python实现计算图形面积
Feb 22 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
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python算术运算符实例详解
2017/05/31 Python
理解python中生成器用法
2017/12/20 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
《维生素c的故事》教学反思
2014/02/18 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
公司离职证明标准样本
2014/10/05 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
居安思危观后感
2015/06/11 职场文书
农村婚庆主持词
2015/06/29 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js