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字符遍历的艺术
Sep 06 Python
python不带重复的全排列代码
Aug 13 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python正则表达式使用范例分享
Dec 04 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
python dumps和loads区别详解
Feb 04 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
php防止sql注入的方法详解
2017/02/20 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
Javascript注入技巧
2007/06/22 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
利用python在excel中画图的实现方法
2020/03/17 Python
scrapy-splash简单使用详解
2021/02/21 Python
Hotels.com中国区:好订网
2016/08/18 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
小学母亲节活动方案
2014/03/14 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
房产证明范本
2015/06/19 职场文书
护士旷工检讨书
2015/08/15 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android