在本教程中,我们将介绍在 Python 中重命名 pandas dataframe 中的列的各种方法。重命名或更改列的名称是最常见的数据整理任务之一。如果您没有编程背景并且过去只使用 Excel 电子表格工作,您可能会觉得在 Python 中执行此操作并不容易,因为您只需在单元格中键入您想要的内容即可轻松重命名 MS Excel 中的列。如果你是数据库背景的话,它类似于SQL中的ALIAS。在 Python 中,有一个流行的数据操作包,称为pandas,它简化了此类数据操作。
2 在 Pandas 中重命名列的方法
在 Pandas 中,有两种简单的方法来重命名列的名称。
第一步是安装pandas 包(如果尚未安装)。!pip show pandas您可以通过在 Ipython 控制台中运行语句来检查您的计算机上是否安装了该软件包。如果没有安装,可以使用命令安装!pip install pandas。
导入数据集进行练习
为了导入数据集,我们使用read_csv( )pandas 包中的函数。
import pandas as pd
df = df = pd.read_csv("https://raw.githubusercontent.com/JackyP/testing/master/datasets/nycflights.csv", usecols=range(1,17))
要查看数据框中列的名称,请编写以下命令:
df.columns
Index(['year', 'month', 'day', 'dep_time', 'dep_delay', 'arr_time', 'arr_delay', 'carrier', 'tailnum', 'flight', 'origin', 'dest', 'air_time', 'distance', 'hour', 'minute'],
dtype='object')
方法一:rename() 函数
假设您要将列名替换year为. 在下面的代码中,它将创建一个名为的新数据框,具有新的列名称和相同的值。 years``df2
df2 = df.rename(columns={'year':'years'})
如果您想在同一数据集中进行更改,df您可以尝试此选项inplace = True
df.rename(columns={'year':'years'}, inplace = True)
默认情况下设置了inplace = False ,因此您需要指定此选项并将其标记为 True。 如果要重命名多个列的名称,可以使用逗号分隔符指定其他列。
df.rename(columns={'year':'years', 'month':'months' }, inplace = True)
方法二:dataframe.columns = [list]
您还可以将新列名列表分配给 df.columns。请参阅下面的示例。我们在这里重命名年和月列。
df.columns = ['years', 'months', 'day', 'dep_time', 'dep_delay', 'arr_time',
'arr_delay', 'carrier', 'tailnum', 'flight', 'origin', 'dest',
'air_time', 'distance', 'hour', 'minute']
重命名具有模式的列
假设您要重命名 名称中包含下划线 “_”的列。 你想摆脱下划线
df.columns = df.columns.str.replace('_', '')
新列名称如下。您可以观察到列名称中没有下划线。
Index(['year', 'month', 'day', 'deptime', 'depdelay', 'arrtime', 'arrdelay', 'carrier', 'tailnum', 'flight', 'origin', 'dest', 'airtime', 'distance', 'hour', 'minute'],
dtype='object')
按位置重命名列
如果您想按位置更改列的名称(例如重命名第一列),可以使用下面的代码来完成。df.columns[0]指第一列。
df.rename(columns={ df.columns[0]: "Col1" }, inplace = True)
按顺序重命名列
如果您想按数字顺序更改列的名称,可以通过for 循环进行迭代来完成。
df.columns=["Col"+str(i) for i in range(1, 17)]
在下面的代码中df.shape[1]返回没有。数据框中的列数。我们需要在此处添加 1,因为range(1,17)返回 1、2、3 到 16(不包括 17)。
df.columns=["Col"+str(i) for i in range(1, df.shape[1] + 1)]
在列名中添加前缀/后缀
add_prefix( )如果您想在现有列名之前或之后添加一些文本,您可以使用和add_suffix( )函数 来完成。
df = df.add_prefix('V_')
df = df.add_suffix('_V')
如何访问名称中有空格的列
出于演示目的,我们可以通过使用在某些列名中添加空格df.columns = df.columns.str.replace('_' , ' ')。您可以使用语法 df["columnname"] 访问该列
df["arr delay"]
如何更改行名称
使用索引选项,您可以重命名行(或索引)。在下面的代码中,我们将数据帧 df 中的行名称 0 和 1 更改为“First”和“Second”。通过创建字典并将前一行名称作为键,将新行名称作为值。
df.rename(index={0:'First',1:'Second'}, inplace=True)