首页 > 其他分享 >【pandas小技巧】--修改列的名称

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

时间:2023-07-31 16:00:31浏览次数:35  
标签:技巧 -- 列名 df1 df2 df pd pandas columns

重命名 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

image.png

1.1. rename函数

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

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

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

1.2. columns属性

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

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

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

1.3. replace方法

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

image.png
这种方式还支持通过正则表达式的方式替换,适合复杂替换的场景。
使用正则替换时,设置参数: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

image.png

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

df1 = df1.add_prefix("A_")
df2 = df2.add_prefix("B_")

df = pd.concat([df1, df2], axis=1)
df

image.png

3. 列名的后缀

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

df1 = df1.add_suffix("_A")
df2 = df2.add_suffix("_B")

df = pd.concat([df1, df2], axis=1)
df

image.png

标签:技巧,--,列名,df1,df2,df,pd,pandas,columns
From: https://www.cnblogs.com/wang_yb/p/17593674.html

相关文章

  • Python 导入function和导入moudle的区别
    以pprint为例导入moudleimportpprint同比C#创建对象,可以通过moudle名访问其中定义的变量、函数、类是长期过程会将moudle定义加载到内存中,整个程序执行过程中均可使用访问方法moudleName.functionNamepprint.pprint(data)导入functionfrompprintimportpprint......
  • C#.NET 国密SM4对称加解密 与JAVA互通 ver:20230731
    C#.NET国密SM4对称加解密与JAVA互通ver:20230731 .NET环境:.NET6控制台程序(.netcore)。JAVA环境:JAVA8,带maven的JAVA控制台程序。 简要解析:1:加密的KEY、明文等输入参数都需要string转byte[],要约定好编码,如:UTF8。2:加密后的输出参数:byte[],在传输时需要转为stri......
  • linux 2 网络基础
    1.包裹函数对服务器客户端等函数进行报错处理以及简化处理比如bindinttcp4bind(shortport,constchar*IP){structsockaddr_inserv_addr;intlfd=Socket(AF_INET,SOCK_STREAM,0);bzero(&serv_addr,sizeof(serv_addr));if(IP==NULL){//......
  • 【机器学习】逻辑回归
    LogisticRegression分类问题本质是分类,要预测的变量是离散的值逻辑回归模型数学表达式\[z=\vecw\cdot\vecx+b\tag{1}\]\[f_{\vecw,b}(\vecx)=g(z)\tag{2}\]\[g(z)=\frac{1}{1+e^{-z}}\tag{3}\]=>\(f_{\vecw,b}(\vecx)=\frac{1}{1+e^{-(\ve......
  • 【机器学习】softmax回归
    SoftmaxRegression(多标签分类)将多输入的分类值转化为[0,1]的概率分布,进而进行逻辑回归算法softmax能将差距大的数值距离拉得更大,但是数值可能会溢出SoftmaxFunction数学表达式\[a_j=\frac{e^{z_j}}{\sum_{k=1}^{N}{e^{z_k}}}\]代码defmy_softmax(z):ez=n......
  • 【机器学习】协同过滤
    CollaborativeFilteringRecommenderSystems解决相似度问题概念准确率=\(accuracy=\frac{预测正确的样本}{总样本}\)精确率=\(precision=\frac{预测成功的正类}{预测的正类}\)【不能误检】召回率=\(recall=\frac{预测成功的正类}{总正类}\)【不能漏报】相......
  • 【机器学习】正则化
    RegularizedCostfunction forregularizedlinearregression数学表达式\[J(\mathbf{w},b)=\frac{1}{2m}\sum\limits_{i=0}^{m-1}(f_{\mathbf{w},b}(\mathbf{x}^{(i)})-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=0}^{n-1}w_j^2\]\[f_{\mathbf{w},b}(......
  • 【机器学习】决策树
    DecisionTree熵-entropy数学表达式\[H(p_1)=-p_1\text{log}_2(p_1)-(1-p_1)\text{log}_2(1-p_1)\]代码#UNQ_C1#GRADEDFUNCTION:compute_entropydefcompute_entropy(y):"""ComputestheentropyforArgs:y(n......
  • 批量导入书签pdf
    FreePic2Pdf快速为pdf文档添加带有超链接的书签目录ZhanweiLiu于2020-05-0613:53:40发布3137收藏14分类专栏:书签PDF版权书签同时被2个专栏收录1篇文章0订阅订阅专栏PDF1篇文章0订阅订阅专栏FreePic2Pdf快速为pdf文档添加带有超链接的书签目录下载FreePic2Pdf提......
  • 【机器学习】K-Means
    K-Means找最接近的质心公式\[c^{(i)}:=j\quad\mathrm{that\;minimizes}\quad||x^{(i)}-\mu_j||^2\]其中,范式\(||X||\),其计算公式为\[||X||=\sqrt{x_1^2+x_2^2+\cdots+x_n^2}\]代码#UNQ_C1#GRADEDFUNCTION:find_closest_centroidsdeffind_closest......