我有如下数据框:
df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
我尝试创建一个允许动态更改列名的函数,在该函数中,我只需在函数中输入旧列名和新列名即可,如下所示:
def rename_column_name(df, old_column, new_column):
df = df.rename({'{}'.format(old_column) : '{}'.format(new_column)}, axis=1)
return df
仅当我只有一个输入时,此功能才适用:
new_df = rename_column_name(df, '$a' , 'a')
这给了我这个new_df如下:
new_df = pd.DataFrame({'a':[1,2], '$b': [10,20]})
但是,我想创建一个函数,使我可以根据自己的喜好对多列/一列进行更改,例如:
new_df = rename_column_name(df, ['$a','$b'] , ['a','b'])
并获得如下的new_df
new_df = pd.DataFrame({'a':[1,2], 'b': [10,20]})
因此,如何使我的函数更具动态性,以允许我自由输入多个/一个列名并重命名它们?
您不需要功能,可以使用dict comprehension
:
In [265]: old_names = df.columns.tolist()
In [266]: new_names = ['a','b']
In [268]: df = df.rename(columns=dict(zip(old_names, new_names)))
In [269]: df
Out[269]:
a b
0 1 10
1 2 20
OP需要的功能:
In [274]: def rename_column_name(df, old_column_list, new_column_list):
...: df = df.rename(columns=dict(zip(old_column_list, new_column_list)))
...: return df
...:
In [275]: rename_column_name(df,old_names,new_names)
Out[275]:
a b
0 1 10
1 2 20
您需要将a列传递给list
此函数。它可以是多列或单列。这应该做您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句