在Python中,有几种方法可以重命名Pandas中的列或改变Pandas数据框架的列名。在这篇文章中,你将看到这些方法中的一些应用,然后是一些使用它们的实用技巧。
创建一个基本的数据框架并在Pandas中重命名一个列
# Creating a basic DataFrame
import pandas as pd
df = pd.DataFrame({
'name': ['Aryan', 'Rohan', 'Riya', 'Yash', 'Siddhant'],
'Tpye': [
'Full-time Employee', 'Intern', 'Part-time Employee',
'Part-time Employee', 'Full-time Employee'
],
'Dept':
['Administration', 'Technical', 'Management', 'Technical', 'Technical'],
'Salary': [20000, 5000, 10000, 10000, 20000]
})
df

上述DataFrame的列名没有描述性或不合适。让我们来看看如何重命名这些列。
pandas.DataFrame.rename
pandas.DataFrame.rename 方法是重命名pandas DataFrame中列的主要方法。
pandas.DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors='ignore')
目的: 改变或自定义潘达斯数据框架的标签。
参数:
-mapper: 字典或函数。它用于应用一个特定的函数来转换列的名称。
-axis: 英特或字符串(默认:'index')。用于确定是否通过指定整数值0(用于索引)或1(用于列)或字符串值('index'用于索引或'columns'用于列)将更改应用于索引或列名。
-index: 字典或函数。在改变索引时可替代指定轴值。如果指定了轴参数的值,就不需要传递这个参数。
-列: 字典或函数。替代指定轴的值,用于改变列名。如果指定了轴参数的值,就不需要传递这个参数。
-复制: 布尔值(默认:真)。用于复制基础数据。
-inplace: 布尔值(默认 :假)。如果这个参数设置为False,那么将创建一个具有所需变化的新DataFrame 。 Int或字符串。在多级索引的情况下,列名将只在指定的级别被改变。 如果这个参数被设置为'raise',那么如果要改变的名称在指定级别不存在,将引发一个KeyError。如果设置为false,这种情况将被忽略。
返回: 一个在指定轴上改变了标签的pandas DataFrame。
尽管在rename 方法中有几个参数可用,但在改变列名时只需要其中的几个。
重命名一个单列
# Using df.columns to view the column names of the DataFrame
print('Before:', df.columns)
#OUTPUT

让我们来重命名。
df.rename(columns={'name': 'Name'}, inplace=True)
# Passing a dictionary where the original column name is the key and the new column name is passed as the value to the key.
print('After:', df.columns)
#OUTPUT

重命名多列
rename 方法也可以用来重命名pandas中的多个列。
原来的列名作为字典中的键被传递,新的列名作为字典中相应键的值被传递。
df.rename(columns={
"name": "Name",
"Tpye": "Type",
"Dept": "Department"
},
inplace=True)
print('After:', df.columns)
pandas.DataFrame.columns
我们可以直接给DataFrame分配一个新的列表或者列名的元组。这对于一次性重命名pandas中的多个列是非常有用的。
print('Before:', df.columns)

# Directly assign a list of new column names as the column names of the dataset.
df.columns = ['Name', 'Type', 'Department', 'Salary']
print('After:', df.columns)

pandas.DataFrame.set_axis
pandas.DataFrame.set_axis 方法是用来改变索引或列名的。这个方法也可以用来在pandas中一次性重命名多个列,方法是传递一个新的列名的列表或元组,并将轴参数的值设置为1。
print('Before:', df.columns)

# Pass a list of column names and set axis=1
df.set_axis(['Name', 'Type', 'Department', 'Salary'], axis=1, inplace=True)
print('After:', df.columns)

实用提示
rename方法对于一次性重命名单列或多列非常有用。然而,不要忘记将inplace参数设置为'True',这样你所做的改变就会应用到数据框架上。rename方法也可以用来通过使用用户定义的函数对列名进行自定义转换。
比如说:
print('original column names:', df.columns)


- 建议只有在大部分或全部列名需要改变时才使用
columns或set_axis方法,因为每次使用该方法时都要传递整个列名列表,这样做可能很麻烦。
测试你的知识
Q1: 我们如何使用pandas.DataFrame.rename 方法来改变列名?
答: 旧的列名和新的列名作为相应的键值对在字典中传递,或者也可以使用自定义的用户定义函数来改变列名。
Q2: 当使用pandas.DataFrame.columns 方法时,通过向该方法传递一个只包含新列名的列表来改变列名是真还是假?
答: 假的,传递给函数的列表应该包含数据集中所有特征的名称。
Q3: 找出给定代码中的错误,写出使用set_axis 方法改变列名的正确代码。
答:
df.set_axis = (('Name', 'Type', 'Department', 'Salary'), axis=0)
df.set_axis = (('Name', 'Type', 'Department', 'Salary'), axis=1)