首页 > 解决方案 > 重命名熊猫中各种格式的列标题

问题描述

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

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”。另一个复杂因素是列可以按任意顺序排列。

如何解决这个问题?

标签: pythonpandasdataframe

解决方案


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

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')

推荐阅读