翼度科技»论坛 编程开发 python 查看内容

【pandas小技巧】--修改列的名称

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
重命名 pandas 数据中列的名称是一种常见的数据预处理任务。
这通常是因为原始数据中的列名称可能不够清晰或准确。例如,列名可能包含空格、大写字母、特殊字符或拼写错误。
使用 pandas 的 rename函数可以帮助我们更改列名,从而使数据更加清晰和易于理解。
此外,重命名列名还可以确保您的代码在维护和共享时更加易于交流和重用。
1. 列名中的特殊字符

比如如下测试数据:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "col name": ["name1", "name2", "name3"],
  5.         "#num@$": [1, 1, 2],
  6.         "坐标A": [1.2, 1.3, 2.3],
  7.         "坐标B": [2.3, 3.3, 5.7],
  8.     },
  9. )
  10. df
复制代码

1.1. rename函数

使用rename函数消除列名中的空格和特殊符号:
  1. df.rename({"col name": "col_name", "#num@$": "num"}, axis=1)
复制代码

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

使用columns修改列名时,需要设置所有的列名,哪怕不需要修改的列名也要列出来。
  1. df.columns = ["col_name", "num", "坐标A", "坐标B"]
  2. df
复制代码

当需要修改的列名比较多,或者所有列名都需要修改时,用这种方式。
1.3. replace方法
  1. df.columns = df.columns.str.replace(" ", "_")
  2. df.columns = df.columns.str.replace("[#@$]", "", regex=True)
  3. df
复制代码

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

当遇到来自不同系统的同类数据时,合并之后会发现很多同样的列名,难以区分。
比如:
  1. df1 = pd.DataFrame(
  2.     {
  3.         "坐标X": [1.2, 1.3, 2.3],
  4.         "坐标Y": [2.3, 3.3, 5.7],
  5.     },
  6. )
  7. df2 = pd.DataFrame(
  8.     {
  9.         "坐标X": [2.2, 3.3, 7.3],
  10.         "坐标Y": [1.3, 4.3, 3.7],
  11.     },
  12. )
  13. df = pd.concat([df1, df2], axis=1)
  14. df
复制代码

这时,我们可以在合并前给不同数据来源的数据的列名上加一个前缀(add_prefix)。
  1. df1 = df1.add_prefix("A_")
  2. df2 = df2.add_prefix("B_")
  3. df = pd.concat([df1, df2], axis=1)
  4. df
复制代码

3. 列名的后缀

除了添加前缀,也可以用添加后缀的方式(add_suffix)来区分不同数据源的数据。
  1. df1 = df1.add_suffix("_A")
  2. df2 = df2.add_suffix("_B")
  3. df = pd.concat([df1, df2], axis=1)
  4. df
复制代码


来源:https://www.cnblogs.com/wang_yb/p/17593674.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具