第二章:25+ Python 数据操作教程(第九节如何重命名 PANDAS DATAFRAME 中的列)

214 阅读3分钟

在本教程中,我们将介绍在 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)