私は以下のようなデータフレームを持っています:
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
この関数は、以下のように入力が1つしかない場合にのみ適用できます。
new_df = rename_column_name(df, '$a' , 'a')
これは私にこのnew_dfを以下のように与えます:
new_df = pd.DataFrame({'a':[1,2], '$b': [10,20]})
ただし、好みに応じて複数列または1列を変更できる関数を作成したかったのです。
new_df = rename_column_name(df, ['$a','$b'] , ['a','b'])
そして、以下のようにnew_dfを取得します
new_df = pd.DataFrame({'a':[1,2], 'b': [10,20]})
では、関数をより動的にして、複数/ 1つの列名を自由に入力し、名前を変更できるようにするにはどうすればよいですか?
関数は必要ありません。次を使用してこれを行うことができます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
list
この関数に列のを渡す必要があります。複数の列または単一の列にすることができます。これはあなたが探していたものをするはずです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加