pandas列重命名
介绍
在使用 pandas 处理数据的时候,经常需要对数据集的列名称进行重新命名。这可以通过 pandas 提供的 rename()
方法来实现。本文将详细介绍 pandas 中的列重命名操作,并提供一些示例代码和运行结果。
pandas 的 rename()
方法
rename()
方法是 pandas 中用于对 DataFrame 或 Series 的索引、列名进行重新命名的方法。它接受一个字典作为参数,字典中的键表示原始的索引或列名,值表示更新后的索引或列名。
重命名列名
首先我们来看一个简单的示例,并展示如何使用 rename()
方法来重命名 DataFrame 的列名。
import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
# 输出原始的 DataFrame
print("原始的 DataFrame:")
print(df)
# 重命名列名
df = df.rename(columns={'Name': '姓名', 'Age': '年龄', 'City': '城市'})
# 输出重命名后的 DataFrame
print("重命名后的 DataFrame:")
print(df)
运行以上代码,输出如下所示:
原始的 DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 London
2 Charlie 35 Paris
重命名后的 DataFrame:
姓名 年龄 城市
0 Alice 25 New York
1 Bob 30 London
2 Charlie 35 Paris
可以看到,原始的 DataFrame 中的列名被成功地重命名为 '姓名'
、'年龄'
和 '城市'
。
重命名索引
除了列名,rename()
方法还可以用于重命名索引。我们来看一个示例,展示如何使用 rename()
方法来重命名 DataFrame 的索引。
import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
df = df.set_index('Name') # 将 'Name' 列设置为索引列
# 输出原始的 DataFrame
print("原始的 DataFrame:")
print(df)
# 重命名索引
df = df.rename(index={'Alice': 'A', 'Bob': 'B', 'Charlie': 'C'})
# 输出重命名后的 DataFrame
print("重命名后的 DataFrame:")
print(df)
运行以上代码,输出如下所示:
原始的 DataFrame:
Age City
Name
Alice 25 New York
Bob 30 London
Charlie 35 Paris
重命名后的 DataFrame:
Age City
Name
A 25 New York
B 30 London
C 35 Paris
可以看到,原始的 DataFrame 中的索引被成功地重命名为 'A'
、'B'
和 'C'
。
rename()
方法的其他用途
除了简单的列名和索引重命名,rename()
方法还可以进行更复杂的操作。下面我们来介绍一些常见的用途。
重命名部分列名或索引
rename()
方法还可以用于仅仅重命名 DataFrame 或 Series 中的某些列名或索引。我们可以通过传递一个函数来实现这个目的。
import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
# 输出原始的 DataFrame
print("原始的 DataFrame:")
print(df)
# 通过函数重命名部分列名
df = df.rename(columns=lambda x: x.upper() if x.startswith('C') else x)
# 输出重命名后的 DataFrame
print("重命名后的 DataFrame:")
print(df)
运行以上代码,输出如下所示:
原始的 DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 London
2 Charlie 35 Paris
重命名后的 DataFrame:
Name Age CITY
0 Alice 25 NEW YORK
1 Bob 30 LONDON
2 Charlie 35 PARIS
可以看到,通过传递一个函数,我们将以字母 'C'
开头的列名重命名为大写格式。其余列名保持不变。
在原地修改或创建副本
默认情况下,rename()
方法返回一个副本,而不是在原始 DataFrame 或 Series 上进行修改。如果想在原地进行修改,可以设置 inplace=True
参数。
import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
# 输出原始的 DataFrame
print("原始的 DataFrame:")
print(df)
# 在原地进行重命名
df.rename(columns={'Name': '姓名', 'Age': '年龄', 'City': '城市'}, inplace=True)
# 输出重命名后的 DataFrame
print("重命名后的 DataFrame:")
print(df)
运行以上代码,输出与之前的示例相同。注意,在原地进行修改时,不需要对 DataFrame 进行重新赋值。
修改索引和列名的标签
rename()
方法还可以用于修改索引和列名的标签。它接受一个字典作为参数,字典中的键表示原始的标签,值表示更新后的标签。
import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
df = df.set_index('Name') # 将 'Name' 列设置为索引列
# 输出原始的 DataFrame
print("原始的 DataFrame:")
print(df)
# 修改索引和列名的标签
df = df.rename(index=str.title, columns=str.upper)
# 输出重命名后的 DataFrame
print("重命名后的 DataFrame:")
print(df)
运行以上代码,输出如下所示:
原始的 DataFrame:
Age City
Name
Alice 25 New York
Bob 30 London
Charlie 35 Paris
重命名后的 DataFrame:
AGE CITY
Name
Alice 25 NEW YORK
Bob 30 LONDON
Charlie 35 PARIS
可以看到,通过传递函数 str.title
和 str.upper
,我们将索引和列名的标签修改为了标题格式和大写格式。
结论
通过使用 pandas 的 rename()
方法,我们可以轻松地对 DataFrame 或Series 的列名和索引进行重命名操作。我们可以通过传递一个字典或函数来指定需要重命名的列名或索引,并可以选择在原地修改或创建副本。此外,rename()
方法还可以进行更复杂的操作,如仅重命名部分列名或索引,修改索引和列名的标签等。
重命名列名和索引在数据分析和处理中经常遇到的需求。通过重命名,我们可以提高数据的可读性和可操作性,使得数据分析更加方便快捷。
这篇文章介绍了 pandas 的 rename()
方法的用法,并给出了一些示例代码和运行结果。