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

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”。另外一个复杂的事实是,列可以以任意顺序排列。

一个人如何解决这个问题?

最佳答案

只是

for index, column_name in enumerate(df.columns):
    if column_name in ['columnA', 'Col_A', 'col_a' ]:
        df.columns[index] = 'column_a'


带字典

dico = {'column_a':['columnA', 'Col_A', 'col_a' ], 'column_b':['columnB', 'Col_B', 'col_b' ]}
for index, column_name in enumerate(df.columns):
    for name, ex_names in dico:
        if column_name in ex_names:
            df.columns[index] = name

关于python - 重命名 Pandas 中格式多样的列标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50177359/

10-12 19:58