在本教程中,我将解释如何使用Pandas重命名方法来重命名Python数据框中的列。
我将解释该技术的作用,语法如何工作,并向你展示如何使用它的清晰例子。
目录
好的,让我们先快速介绍一下重命名方法。
Pandas重命名的快速介绍
Pandas的重命名方法是相当直接的:它使你能够重命名Python数据框架的列或重命名行的标签。
这种技术最常被用来重命名数据框架的列(即变量名)。

但是同样,它也可以重命名行标签(即数据框架索引中的标签)。
我将在例子部分向你展示这两方面的例子。
但首先,让我们看一下语法。
潘达斯重命名的语法
好了,现在我已经解释了潘达斯重命名方法的作用,让我们来看看它的语法。
在这里,我将向你展示如何重命名Pandas列的语法,以及如何重命名Pandas行的标签。
一个简单的说明
我将要描述的一切都假设你已经导入了Pandas,并且你已经创建了一个Pandas数据框架。
你可以通过以下代码导入Pandas
import pandas as pd
重命名Pandas列的语法
好吧,让我们从重命名列的语法开始。 (重命名列和重命名行标签的语法几乎是相同的,但我们还是一步一步来吧)。
当我们使用重命名方法时,我们实际上是从我们的数据框架开始的。 你输入数据框架的名称,然后.rename() 来调用这个方法。

在括号内,你将使用columns 参数,它使你能够指定你要改变的列。
如何使用列参数
让我们仔细看看如何使用列参数。
当你使用重命名方法改变列名时,你需要在一个 Python 字典内提出旧的列名和新的列名。

因此,如果旧的变量名是old_var ,新的变量名是new_var ,你将以键/值对的形式呈现给columns 参数,在一个字典中:columns = {'old_var':'new_var'} 。
如果你有多个想要改变的列,你只需提供多个旧名称/新名称的字典对,用逗号隔开。
重命名 Pandas 行标签的语法
现在,让我们看看重命名行标签(即数据框索引中的标签)的语法。

你会注意到,该语法与改变列名的语法几乎完全相同。
主要的区别是,当你想改变行标签时,你需要使用columns 参数,而不是使用index 参数。
除此之外,你仍然要使用一个包含旧名称/新名称对的字典作为index 参数的参数。
Pandas重命名的参数
现在,让我们来看看重命名方法的参数。
你应该知道的最重要的参数是。
columnsindexinplace
重命名方法还有一些额外的参数--axis,copy,levels, 和errors --但是这些参数更高级,不常用,所以我不会在这里介绍它们。
columns
columns 参数使你能够指定你想改变的列名,以及将它们改变成什么。
如上所述,这个参数的参数可以是一个字典,但它也可以是一个函数。
当你提供一个字典时,它的值应该是旧名/新名对的结构,像这样:{'old_var':'new_var'} 。
index
index 参数与columns 参数非常相似,只是它操作的是行索引标签而不是列名。
因此,index 参数使你能够指定你想改变的行标签,以及要把它们改变成什么。
如上所述,这个参数的参数可以是一个字典,但它也可以是一个函数。
当你提供一个字典时,它的值应该是旧名/新名对的结构,像这样:{'old_var':'new_var'} 。
inplace
inplace参数使你能够强迫重命名方法直接修改正在操作的数据框架。
默认情况下,inplace 被设置为inplace = False 。这导致重命名方法产生一个新的数据框架。 在这种情况下,原来的数据框架将保持不变。
如果你设置inplace = True ,重命名方法将直接改变原始数据框架,并直接覆盖数据。 对此要小心,确保你的代码完全按照你的要求来做。
Pandas重命名的输出
默认情况下,重命名方法将输出一个新的Python数据框架,带有新的列名或行标签。 如上所述,这意味着默认情况下,rename 将不改变原始数据框架。
如果你设置了inplace = True ,rename 将不会产生任何新的输出。 在这种情况下,rename将直接修改和覆盖正在操作的数据框架。
例子如何重命名Pandas列和Pandas行标签
现在我们已经看了语法,让我们看看一些例子。
例子
然而,在你运行这些例子之前,你需要运行一些初步的代码来导入我们需要的模块,并创建我们将要操作的数据集。
导入模块
首先,让我们导入Pandas。
你可以用下面的代码来做。
#===============
# IMPORT MODULES
#===============
import pandas as pd
请注意,我们是用别名pd 来导入Pandas的。 这样就可以在我们的代码中把Pandas称为pd ,这也是Python数据科学家的共同约定。
创建DataFrame
接下来,我们将创建一个我们可以操作的数据框架。
我们将分三步创建我们的数据框架。
- 创建一个Python字典
- 从字典中创建一个Pandas数据框架
- 指定列和行的标签(即索引)。
让我们从创建一个 Python 字典开始。 正如你所看到的,这个字典包含了几个国家的经济数据。
#==========================
# CREATE DICTIONARY OF DATA
#==========================
country_data_dict = {
'country_code':['USA', 'CHN', 'JPN', 'GER', 'UK', 'IND']
,'country':['USA', 'China', 'Japan', 'Germany', 'UK', 'India']
,'continent':['North America','Asia','Asia','Europe','Europe','Asia']
,'gross_domestic_product':[19390604, 12237700, 4872137, 3677439, 2622434, 2597491]
,'pop':[322179605, 1403500365, 127748513, 81914672, 65788574, 1324171354]
}
接下来,我们将从字典中创建一个 DataFrame。
#=================================
# CREATE DATAFRAME FROM DICTIONARY
#=================================
country_data = pd.DataFrame(country_data_dict, columns = ['country_code','country', 'continent', 'gross_domestic_product', 'pop'])
注意,在这一步,我们使用 pd.DataFrame() 里面的columns 参数来设置列名。
最后,我们将设置行标签(即索引)。 默认情况下,Pandas使用一个从0开始的数字整数索引。
我们要把这个默认索引改成字符数据。
具体来说,我们将使用country_code 变量中的值作为我们新的行标签。
为了做到这一点,我们将使用Pandas的set_index方法。
country_data = country_data.set_index('country_code')
请注意,我们使用等号将set_index() 的输出分配给原始数据框架的名称,country_data 。 这是因为在默认情况下,set_index() 的输出是一个新的数据框架对象。 默认情况下,set_index() 不会在原地修改DataFrame。
好了。 现在我们有了我们的数据框架,让我们把它打印出来,看看内容。
print(country_data)
输出
country continent gross_domestic_product pop
country_code
USA USA North America 19390604 322179605
CHN China Asia 12237700 1403500365
JPN Japan Asia 4872137 127748513
GER Germany Europe 3677439 81914672
UK UK Europe 2622434 65788574
IND India Asia 2597491 1324171354
这个数据框架有六个国家的经济数据,以行和列的结构组织。
该数据框架有四列。country,continent, gross_domestic_product , 和pop 。
此外,注意到 "country_code" 变量被设置在左边。 这是因为我们已经将country_code 列设置为索引。 country_code 的值现在将作为数据框架的行标签。
现在我们有了这个数据框架,我们就可以使用rename() 方法来重新命名这些列和行标签。
例子1:重命名一个数据框架的列
首先,让我们从简单的开始。
在这里,我们要重命名一个单独的列名。
具体来说,我们将把gross_domestic_product 变量重命名为GDP 。
让我们运行代码,然后我将解释。
country_data.rename(columns = {'gross_domestic_product':'GDP'})
输出
country continent GDP pop
country_code
USA USA North America 19390604 322179605
CHN China Asia 12237700 1403500365
JPN Japan Asia 4872137 127748513
GER Germany Europe 3677439 81914672
UK UK Europe 2622434 65788574
IND India Asia 2597491 1324171354
解释
注意在输出中,gross_domestic_product 已经被重命名为GDP 。
我们是怎么做的呢?
我们输入了数据框架的名称,country_data ,然后使用所谓的 "点语法 "来调用rename() 方法。
在括号内,我们使用columns 参数来指定我们要重命名的列,以及我们要使用的新名称。 这个'旧名'/'新名'对以字典的形式呈现,形式是{'old name':'new name'} 。
因此,我们有一个同步的columns = {'gross_domestic_product':'GDP'} ,这基本上是说把列名'gross_domestic_product' 改为'GDP' 。
记住:原始数据框架是不变的。
这里还有一件事要指出:当我们运行这段代码时,原始数据框架将保持不变。
这是因为在默认情况下,Pandas的重命名方法会产生一个新的数据框架作为输出,并保留原始数据框架不变。 而且默认情况下,这个输出将直接发送到控制台。因此,当我们像这样运行我们的代码时,我们会在控制台中看到带有新名字的新数据框架,但原始数据框架将保持不变。
如果你想保存输出,你可以像这样使用赋值运算符。
country_data_new = country_data.rename(columns = {'gross_domestic_product':'GDP'})
在这里,我给输出的数据框架起了一个新名字country_data_new 。
我们可以叫它任何我们喜欢的名字。 我们甚至可以叫它country_data 。 只是要小心,如果你做country_data_new = country_data.rename(...) ,它将覆盖你的原始数据集。 在你这样做之前,请确保你的代码能完美地工作。
实例2:重命名多个列
接下来,让我们把事情做得更复杂一点。
在这里,我们将同时重命名多个列。
这样做的方法与例1中的代码非常相似,只是在这里,我们将在我们的字典中提供更多的旧名/新名对。
具体地说,我们将把gross_domestic_product 重命名为GDP ,我们将把pop 重命名为population 。
让我们看一下。
country_data.rename(columns = {'gross_domestic_product':'GDP', 'pop': 'population'})
输出
country continent GDP population
country_code
USA USA North America 19390604 322179605
CHN China Asia 12237700 1403500365
JPN Japan Asia 4872137 127748513
GER Germany Europe 3677439 81914672
UK UK Europe 2622434 65788574
IND India Asia 2597491 1324171354
解释
如果你理解了例子 1,这应该是有意义的。
在这里,我们使用点语法调用rename() 方法。
在括号内,我们有代码columns = {'gross_domestic_product':'GDP', 'pop': 'population'} 。
看看字典里面(即大括号里面)。这里,我们有两个旧名称/新名称对。 这些被组织成键/值对,就像我们通常在字典里看到的那样。
实例 3:重命名行标签
现在,让我们重命名一些行的标签。
具体地说,我们要重新命名标签GER 和UK 。
要做到这一点,我们将使用index 参数。
让我们看一下。
country_data.rename(index = {'GER':'DEU','UK':'GBR'})
输出
country continent gross_domestic_product pop
country_code
USA USA North America 19390604 322179605
CHN China Asia 12237700 1403500365
JPN Japan Asia 4872137 127748513
DEU Germany Europe 3677439 81914672
GBR UK Europe 2622434 65788574
IND India Asia 2597491 1324171354
解释
在这里,我们要把GER 改名为DEU ,把UK 改名为GBR 。
为了做到这一点,我们调用了重命名方法,并在括号内使用代码index = {'GER':'DEU','UK':'GBR'} 。
index 这个参数使我们能够指定我们想要改变的行标签。 而我们使用字典作为参数,它包含旧值/新值对。
例子 4:就地改变列名和行标签
最后,让我们 "就地 "改变一些列和行的标签。
正如我在例子1和语法部分提到的,默认情况下,重命名方法不会改变原始数据框。 这是因为默认情况下,inplace 参数被设置为inplace = False 。这导致重命名方法产生一个新的数据框架作为输出,而保留原始数据框架不变。
但有时,我们实际上想直接修改原始数据框架。
要做到这一点,我们可以设置inplace = True 。
创建数据框架的副本
在运行我们的代码之前,我们实际上要做一个数据的副本。
原因是我们要直接覆盖一个数据框架。 如果你弄错了,这可能会很危险,所以我们实际上要用原始数据的一个副本来工作。
country_data_copy = country_data.copy()
现在,我们有一个数据框架,country_data_copy ,它包含与原始数据相同的数据。
在原地重命名列和标签
现在,我们要直接重命名country_data_copy 的列和行标签。
要做到这一点,我们将使用rename与inplace 参数,如下所示。
country_data_copy.rename(index = {'GER':'DEU','UK':'GBR'}
,columns = {'gross_domestic_product':'GDP', 'pop': 'population'}
,inplace = True
)
现在,让我们把数据打印出来,这样我们就可以看到它了。
print(country_data_copy)
输出
country continent GDP population
country_code
USA USA North America 19390604 322179605
CHN China Asia 12237700 1403500365
JPN Japan Asia 4872137 127748513
DEU Germany Europe 3677439 81914672
GBR UK Europe 2622434 65788574
IND India Asia 2597491 1324171354
解释
正如你在输出中看到的那样,行标签和列名已经在country_data_copy 中直接改变。
我们只是通过设置inplace = True 。
再次强调:对此要小心。 当你这样做时,你会直接修改和覆盖你的数据。 在使用inplace = True 之前,请检查你的代码并再次仔细检查,以确保你的代码工作正常。
关于Pandas重命名的常见问题
让我们快速介绍一下关于Pandas重命名技术的常见问题。
常见问题。
问题1:为什么我使用重命名函数后,我的数据框架没有变化?
记住:默认情况下,Pandas重命名函数会创建一个新的数据框架作为输出,但会保留原始数据框架不变。(我在语法部分提到了这一点)。
原因是,默认情况下,inplace参数被设置为inplace = False 。 同样,这使得原始数据框架没有变化,而只是产生一个新的数据框架作为输出。
如果你想直接修改你的原始数据框架,你需要设置inplace = False 。 我在例子4中展示了如何做到这一点。
这个教程应该已经让你对如何使用Pandas重命名方法在Python中重命名列有了一个很好的概念。