我想编写一个函数,该函数根据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
答案 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函数