重命名 pandas 数据中列的名称是一种常见的数据预处理任务。
这通常是因为原始数据中的列名称可能不够清晰或准确。例如,列名可能包含空格、大写字母、特殊字符或拼写错误。

使用 pandasrename函数可以帮助我们更改列名,从而使数据更加清晰和易于理解。
此外,重命名列名还可以确保您的代码在维护和共享时更加易于交流和重用。

1. 列名中的特殊字符

比如如下测试数据:

import pandas as pd

df = pd.DataFrame(
{
"col name": ["name1", "name2", "name3"],
"#num@$": [1, 1, 2],
"坐标A": [1.2, 1.3, 2.3],
"坐标B": [2.3, 3.3, 5.7],
},
)
df

1.1. rename函数

使用rename函数消除列名中的空格和特殊符号:

df.rename({"col name": "col_name", "#num@$": "num"}, axis=1)


需要修改的列名不多时,用这种方式比较直观。

1.2. columns属性

使用columns修改列名时,需要设置所有的列名,哪怕不需要修改的列名也要列出来。

df.columns = ["col_name", "num", "坐标A", "坐标B"]
df


当需要修改的列名比较多,或者所有列名都需要修改时,用这种方式。

1.3. replace方法

df.columns = df.columns.str.replace(" ", "_")
df.columns = df.columns.str.replace("[#@$]", "", regex=True)
df


这种方式还支持通过正则表达式的方式替换,适合复杂替换的场景。
使用正则替换时,设置参数:regex=True

2. 列名的前缀

当遇到来自不同系统的同类数据时,合并之后会发现很多同样的列名,难以区分。
比如:

df1 = pd.DataFrame(
{
"坐标X": [1.2, 1.3, 2.3],
"坐标Y": [2.3, 3.3, 5.7],
},
)
df2 = pd.DataFrame(
{
"坐标X": [2.2, 3.3, 7.3],
"坐标Y": [1.3, 4.3, 3.7],
},
) df = pd.concat([df1, df2], axis=1)
df

这时,我们可以在合并前给不同数据来源的数据的列名上加一个前缀(add_prefix)。

df1 = df1.add_prefix("A_")
df2 = df2.add_prefix("B_") df = pd.concat([df1, df2], axis=1)
df

3. 列名的后缀

除了添加前缀,也可以用添加后缀的方式(add_suffix)来区分不同数据源的数据。

df1 = df1.add_suffix("_A")
df2 = df2.add_suffix("_B") df = pd.concat([df1, df2], axis=1)
df

【pandas小技巧】--修改列的名称的更多相关文章

  1. DataTable 删除列 调整列顺序 修改列标题名称

    DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...

  2. pandas小技巧

    1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ...

  3. 【转】 C# 小技巧之获取变量名称

    link: http://www.cnblogs.com/gongy/p/lm-2015-04-03.html 今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在 ...

  4. iOS开发小技巧-修改SliderBar指针的样式(牢记这个方法,只能通过代码来修改)

    代码: // 修改进度条的指针图片 [self.progressSlider setThumbImage:[UIImage imageNamed:@"player_slider_playba ...

  5. 【冷门】 C# 小技巧之获取变量名称

    今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在找寻这种方式,很不容易找到一个解决方案来自http://www.th7.cn/Program/net/20140 ...

  6. iOS开发小技巧--修改按钮内部图片和文字之间的间距(xib)

    调整按钮的Edge属性,选择调整图片的Edge还是label的Edge,如图:

  7. pandas 小技巧

    1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...

  8. SQL 增加列、修改列、删除列

    SQL语句增加列.修改列.删除列 1.增加列: alter table tableName add columnName varchar(30) 2.1. 修改列类型: alter table tab ...

  9. SQL语句增加列、修改列类型、修改列、删除列

    1.增加列: alter table tableName add columnName varchar(30) 2.修改列类型: alter table tableName alter column ...

  10. sql添加列,删除列,修改列

    有时候,当数据库里面有数据了,再到设计器里面删除列,就删不掉.只能用代码删除. alter table tableName drop column columnName 添加列 ) 修改列 ) --修 ...

随机推荐

  1. 「Vue系列」之Vue2实现当前组件重新加载

    遇到问题的场景:需要把当前组件完全还原成初始化状态,不要页面全部刷新例如:重置按钮,只刷新当前加载组件其他办法:使用vue-router重新定向到当前页面,页面不刷新使用window-reload() ...

  2. 2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟。请问etcd部署在k3s中,yaml如何写?

    2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟.请问etcd部署在k3s中,yaml如何写? 答案2022-12-25: 用户名:root 密码 ...

  3. 2022-09-03:n块石头放置在二维平面中的一些整数坐标点上 每个坐标点上最多只能有一块石头 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。 给你一个长度为 n 的数组

    2022-09-03:n块石头放置在二维平面中的一些整数坐标点上 每个坐标点上最多只能有一块石头 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头. 给你一个长度为 n 的数组 ...

  4. 2020-10-28:go中,好几个go程,其中一个go程panic,会产生什么问题?

    福哥答案2020-10-28: 1.运行时恐慌,当panic被抛出异常后,如果我们没有在程序中添加任何保护措施的话,程序就会打印出panic的详细情况之后,终止运行.2.有panic的子协程里的def ...

  5. 2021-10-30:有效的字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位

    2021-10-30:有效的字母异位词.给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词.注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位 ...

  6. Linux:论如何在虚拟机上挂载多个镜像?

    欢迎来到千汐   博客名称:千秋云染博客网址:https://www.cnblogs.com/skyrainmom 寄语:在混乱不堪的世界里你只管前行,时间替会证明一切 world cookie 我可 ...

  7. linux DNS域名解析

    目录 一.DNS概念 二.域名格式类型 三.查询类型 四.解析类型 五.配置DNS 六.dns解析实验 1.配置正向解析 2.反向解析 3.主从解析 一.DNS概念 概念:域名和IP地址的相互映射的分 ...

  8. react中useRef的应用

    何为useRef useRef是随着react函数式组件发展而来的,是react众多官方hook中的一个,调用useRef可以返回一个伴随这组件整个声明周期不发生改变的对象,这个对象常见的用途有两个: ...

  9. 花了半天时间,使用spring-boot实现动态数据源,切换自如

      在一个项目中使用多个数据源的情况很多,所以动态切换数据源是项目中标配的功能,当然网上有相关的依赖可以使用,比如动态数据源,其依赖为, <dependency> <groupId& ...

  10. 快速取模算法(Barrett Reduction)

    原理:取模运算低效的原因本质是除法运算的低效.如果能将除法变成其它运算就可以加速.具体地,将除以任意数转化成"乘一个数.除以一个 \(2^k\) "(取 \(2^{62}\) 即可 ...