💩

【pandas】male→0、femlae→1とデータの前処理をする。

2022/06/29に公開

pandas100本ノックを使用させていただいています。

そこで、以下の問いが困難だったので備忘録として残します。
また、解答をコピペするもうまくいかず、原因は「暗黙のコピー」でした。

問題
問題
カラムsexにおいて、male -> 0, female -> 1
と変更しなさい
データ

ちなみに、データは以下のような形式です。

df.head()

正解

先に、以下が答えです。
male -> 0, female -> 1が実現できています。

df.loc[df['sex'] == 'male', 'sex'] = 0
df.loc[df['sex'] == 'female', 'sex'] = 1
df

詰まったところ

インデックスチェインというものにより、変更がうまくいっていなかったみたいです。
この記事で理由をまとめてくださっています。

df['sex'][df['sex'] == 'male'] = 0
df['sex'][df['sex'] == 'female'] = 1

これはエラー。

端的にいうと、インデックスチェインという「連続探索」のようなことを行うと、元のオブジェクトとは別のDataFrameオブジェクトがメモリ上に作成されてしまう。
そのため、=0, =1などの変更部分が元のオブジェクトには反映されないということみたいです。

Discussion