当导入
.xlsx
使用
pd.read_excel()
时,
如何部分更改列名称?
例如,
Excel文档
data.xlsx
由99列组成,如
col_1
、
col_1
、
col_3
....
col_99
.
我只想像字典一样重命名| ||至于其他列
rename = {'col_1' : 'ID', 'col_2' : 'name', 'col_3' : 'score'}
~
col_4
,则无需重命名。
col_99
有选项
pd.read_excel('data.xlsx')
,但需要覆盖整个列名。
names = []
是使用
时,还有另一种方法可以仅更改某些列名称吗?
pd.read_excel()
?
可以使用
pd.read_excel()
函数中的
header
和
names
参数,以及列表推导来实现此目的。以下是操作方法:
-
读取列标题:
使用
header
参数指定标题行,将 Excel 文件中的第一行读取为列标题。 - 创建重命名字典: 创建一个字典,其中包含要重命名的列的映射。
- 使用列表推导重命名: 使用列表推导,根据需要重命名列。
代码:
import pandas as pd
# 要重命名的列字典
rename_dict = {'col_1': 'ID', 'col_2': 'name', 'col_3': 'score'}
# 读取 Excel 文件,将第一行作为标题
df = pd.read_excel('data.xlsx', header=0)
# 使用列表推导重命名列
df.columns = [rename_dict.get(col, col) for col in df.columns]
# 现在,df 中的列将根据 rename_dict 进行重命名,而其他列保持不变。
print(df.columns)
解释:
-
pd.read_excel('data.xlsx', header=0)
读取 Excel 文件,并将第一行作为列标题。 -
列表推导
[rename_dict.get(col, col) for col in df.columns]
遍历df.columns
中的每个列名 (col
)。 -
对于每个
col
,它会尝试从rename_dict
中获取值。如果找到键(列名),则返回重命名后的名称。 -
如果未找到该键,则
rename_dict.get(col, col)
返回原始列名col
,从而保持不变。
这样,无需创建整个列名列表,即可有选择地重命名
pd.read_excel()
中的特定列。