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 Django连接MySQL数据库做增删改查
Nov 07 Python
Python break语句详解
Mar 11 Python
Python中的装饰器用法详解
Jan 14 Python
Python实现针对中文排序的方法
May 09 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
如何基于python实现不邻接植花
May 01 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 FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python with语句的原理与用法详解
2020/03/30 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
村官学习十八大感想
2014/01/15 职场文书
学校对教师的评语
2014/04/28 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python