Pandas中重命名列名的方法

Pandas中重命名列名的方法

技术背景

在使用Python的Pandas库进行数据处理时,经常会遇到需要重命名DataFrame列名的情况。比如数据来源的列名可能包含特殊字符、不符合命名规范或者需要更具描述性的名称,这就需要对列名进行修改。

实现步骤

1. 重命名特定列

使用df.rename()函数,指定需要重命名的列。

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4]})

# 重命名列
df = df.rename(columns={'$a': 'a', '$b': 'b'})
# 或者直接在原DataFrame上修改
# df.rename(columns={'$a': 'a', '$b': 'b'}, inplace=True)

print(df)

2. 直接重新分配列头

可以使用df.set_axis()方法或直接赋值给df.columns属性。

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd

df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4], '$c': [5, 6]})

# 使用set_axis方法
df2 = df.set_axis(['a', 'b', 'c'], axis=1)

# 直接赋值
df.columns = ['a', 'b', 'c']

print(df)

3. 使用函数重命名

rename方法可以接受一个函数,对每个列名进行处理。

1
2
3
4
5
6
7
import pandas as pd

df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4], '$c': [5, 6]})

df.rename(columns=lambda x: x[1:], inplace=True)

print(df)

4. 使用字符串替换

利用df.columns.str.replace()方法去除特定字符。

1
2
3
4
5
6
7
import pandas as pd

df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4], '$c': [5, 6]})

df.columns = df.columns.str.replace('$', '')

print(df)

核心代码示例

以下是一个完整的示例,展示了多种重命名列名的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4], '$c': [5, 6], '$d': [7, 8], '$e': [9, 10]})

# 方法1:重命名特定列
df1 = df.rename(columns={'$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'})

# 方法2:直接重新分配列头
df2 = df.set_axis(['a', 'b', 'c', 'd', 'e'], axis=1)

# 方法3:使用函数重命名
df3 = df.copy()
df3.rename(columns=lambda x: x[1:], inplace=True)

# 方法4:使用字符串替换
df4 = df.copy()
df4.columns = df4.columns.str.replace('$', '')

print("方法1结果:")
print(df1)
print("方法2结果:")
print(df2)
print("方法3结果:")
print(df3)
print("方法4结果:")
print(df4)

最佳实践

  • 部分列重命名:如果只需要重命名部分列,使用df.rename()函数并指定需要重命名的列。
  • 全部列重命名:如果需要重命名所有列,直接赋值给df.columns属性或使用df.set_axis()方法。
  • 有规律的列名修改:当列名有规律时,如都包含特定字符,使用df.columns.str.replace()或在df.rename()中使用函数处理。

常见问题

1. 原DataFrame未改变

在使用df.rename()时,如果没有指定inplace=True,原DataFrame不会被修改,需要将结果赋值给新的变量。

1
2
3
4
5
6
7
8
9
10
import pandas as pd

df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4]})
# 没有指定inplace=True,原DataFrame未改变
df.rename(columns={'$a': 'a', '$b': 'b'})
print(df) # 列名仍为$a和$b

# 指定inplace=True
df.rename(columns={'$a': 'a', '$b': 'b'}, inplace=True)
print(df) # 列名已改变

2. 列名数量不匹配

在直接赋值给df.columns时,新列名的数量必须与原列名数量一致,否则会报错。

1
2
3
4
5
6
7
import pandas as pd

df = pd.DataFrame({'$a': [1, 2], '$b': [3, 4], '$c': [5, 6]})
try:
df.columns = ['a', 'b']
except ValueError as e:
print(f"错误:{e}")

Pandas中重命名列名的方法
https://119291.xyz/posts/2025-04-14.pandas-column-renaming-methods/
作者
ww
发布于
2025年4月14日
许可协议