Pandas Dataframe-根据数据框名称重命名列

时间:2019-05-08 10:37:48

标签: python-3.x pandas dataframe dictionary rename

我想编写一个函数,该函数根据df的名称更新df的列名。

我有许多具有相同列的dfs。我最终需要将这些df合并为一个df。为了确定合并后数据的原始来源,我想通过在每个单独的df首先在列名后附加一个标识符来更新列名

我尝试在函数中使用字典(dict)更新列,但无法使其正常工作

我尝试了以下功能:

def update_col(input):

    dict = {'df1': 'A'
            ,'df2': 'B'
            }
    input.rename(columns= {'Col1':'Col1-' + dict[input]
                            ,'Col2':'Col2-' + dict[input]
                            },inplace= True)

我的测试df是

df1:

Col1  Col2
foo   bah
foo   bah

df2:

Col1  Col2
foo   bah
foo   bah

我希望获得如下运行的功能

update_col(df1)

df1:

Col1-A  Col2-A
foo     bah
foo     bah

1 个答案:

答案 0 :(得分:2)

我认为更好的方法是:

mydict = {'df1': 'A'
        ,'df2': 'B'
        }

d={'df'+str(e+1):i for e,i in enumerate([df1,df2])} #create a dict of dfs

final_d={k:v.add_suffix('-'+v1) for k,v in d.items() for k1,v1 in mydict.items() if k==k1}
print(final_d)

{'df1':   Col1-A Col2-A
0    foo    bah
1    foo    bah, 'df2':   Col1-B Col2-B
0    foo    bah
1    foo    bah}

然后您可以使用final_d['df1']等访问dfs。

注意:请不要使用dict作为字典名称,因为它是内置的python函数