1. メソッドチェーンで列名を変更したい
メソッドチェーンは便利で可読性が高い。
できるだけすべての処理をメソッドチェーンだけで完結したい。
でもコーディングしていると「どうやってメソッドチェーンでコーディングできるかな?」という状況に陥ります。
DataFrameの列名の変更もこの状況の一つ。
メソッドチェーンで列名を変更する方法を調べたので共有します。
2. メソッドチェーンとは?
メソッドチェーンは '.' (dot) でいくつかの処理を連結して書いていきます。
例えばこのようなコードです。
(
df
.head()
.describe()
)
DataFrameに対してhead()で最初の5行を選択して、この5行に対してdescribe()で統計量を確認しています。
3. DataFrameの列名の変更
一般的にDataFrameの列名を変更する場合にはこのようになります。
import pandas as pd
from sklearn import datasets
boston = datasets.load_boston()
boston_df = pd.DataFrame(
boston.data,
columns=boston.feature_names,
)
new_columns = [
'new_' + s
for s
in boston_df.columns
]
boston_df.columns = new_columns
データはbostonを使用しました。
元々の列名のprefixに’new_'を追加して列名を変更します。
下記で列名の変更しています。
boston_df.columns = new_columns
でもこのコードではメソッドを使用していないのでメソッドチェーンで使用できません。
列名を変更できるメソッドは
「.set_axis」
です。
4. set_axis
「.set_axis」を使用して列名をメソッドチェーンで変更できます。
import pandas as pd
from sklearn import datasets
boston = datasets.load_boston()
boston_df = pd.DataFrame(
boston.data,
columns=boston.feature_names,
)
new_columns = [
'new_' + s
for s
in boston_df.columns
]
(
boston_df
.set_axis(
new_columns,
axis=1,
inplace=True,
)
)
今回はset_axisを紹介するために新変数名(new_columns)を事前に処理しておきました。
本当であればnew_columnsを作成する処理もメソッドチェーンの中に取り込みたいところです。
このような処理については別途記事で紹介する予定です。
5. まとめ
地味な内容になってしまいましたが、列名を変更したい場面は多く.set_axisは多くの場面で活用できるでしょう。
メソッドチェーンにこだわらなければ別の方法でも対応可能なので.set_axisについて調べてたどり着くこともなかったでしょう。
私は今後.set_axisを有効活用して使いこなすことができるでしょう。
今回は以上です。