Skip to main content
 首页 » 编程设计

python之重命名 Pandas 中各种格式的列标题

2025年05月04日20wayfarer

我正在开发一个对数据框进行一些计算的小工具,让我们这样说:

df['column_c'] = df['column_a'] + df['column_b'] 

为此,数据框需要包含列“column_a”和“column_b”。如果列的名称在导入文件(csv 或 xlsx)中的名称略有不同,我希望此代码能够工作。例如“columnA”、“Col_a”等)。

最简单的方法是重命名导入文件中的列,但我们假设这是不可能的。因此我想做一些这样的思考:

if column name is in list ['columnA', 'Col_A', 'col_a', 'a'... ] rename it to 'column_a' 

我正在考虑拥有一个包含可能的列名的字典,当一个列名出现在这个字典中时,它将被重命名为“column_a”。一个额外的复杂因素是列可以按任意顺序排列。

如何解决这个问题?

请您参考如下方法:

我建议你制定转换逻辑并相应地编写一个函数:

lst = ['columnA', 'Col_A', 'col_a', 'a'] 
 
def converter(x): 
    return 'column_'+x[-1].lower() 
 
res = list(map(converter, lst)) 
 
['column_a', 'column_a', 'column_a', 'column_a'] 

然后您可以直接在 pd.DataFrame.rename 中使用它:

df = df.rename(columns=converter) 

示例用法:

df = pd.DataFrame(columns=['columnA', 'col_B', 'c']) 
df = df.rename(columns=converter) 
 
print(df.columns) 
 
Index(['column_a', 'column_b', 'column_c'], dtype='object')