资讯专栏INFORMATION COLUMN

pandas 修改 DataFrame 列名

LeexMuller / 924人阅读

摘要:本文参考自修改列名原博客针对每个中的元素做相同的修改操作而拙作是对每个元素做不同操作的生搬硬套请大家不吝赐教提出问题存在一个名为的现在我要将其名字改为该如何操作解决一通过类的自身属性修改无脑赋值直接修改先解决的推导问题列表推导类型转换通过函

本文参考自:pandas 修改 DataFrame 列名
原博客针对每个DataFrame.columns中的元素做相同的修改操作
拙作是对每个元素做不同操作的生搬硬套, 请大家不吝赐教

提出问题

存在一个名为datasetDataFrame

>>> 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)
稍微总结一下 : 字典推导和列表推导的使用方法很类似, 最大的区别是选择中括号还是大括号 写在最后 十分欢迎大家直接修改拙作或提出建议!!!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43217.html

相关文章

  • 【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算

    摘要:数据规整化清理转换合并重塑数据聚合与分组运算数据规整化清理转换合并重塑合并数据集可根据一个或多个键将不同中的行链接起来。函数根据样本分位数对数据进行面元划分。字典或,给出待分组轴上的值与分组名之间的对应关系。 本篇内容为整理《利用Python进行数据分析》,博主使用代码为 Python3,部分内容和书本有出入。 在前几篇中我们介绍了 NumPy、pandas、matplotlib 三个...

    The question 评论0 收藏0
  • Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(s

    摘要:批量删除列名中的后缀实战使用函数批量删除列名中的后缀使用函数批量删除列名中的后缀目录  Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)、使用replace函数批量删除列名中的后缀(suffix) 目录

    pcChao 评论0 收藏0
  • Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(p

    摘要:批量删除列名中的前缀实战使用函数批量删除列名中的前缀使用函数批量删除列名中的前缀目录 Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(prefix)、使用replace函数批量删除列名中的前缀(prefix)   目录

    levius 评论0 收藏0
  • ❤️数据科学-Pandas、Numpy、Matplotlib秘籍之精炼总结

    前言: 先感受一下数据科学的魅力,上图是在Smart Dubai 2017 GITEX科技周展台上推出Smart Decision-Making Platform(智能决策平台),于10月8日至12日在迪拜世界贸易中心举行。游客可以通过一个沉浸式的空间将数据可视化,让他们了解迪拜的未来。让参观者可以在现场查阅观看全市数据,这意味着迪拜将成为了世界上第一个与公众分享实时实时数据的城市,同时还可以预...

    Zhuxy 评论0 收藏0

发表评论

0条评论

LeexMuller

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<