Python PR

DataFrameの特定の位置のデータを取り出す(loc()、iloc())

記事内に商品プロモーションを含む場合があります

Pythonの初心者がよく忘れがちなのが、DataFrame中の特定の位置のデータを抽出する方法です。

毎回、Googleで検索して調べるのも大変ですので、こちらのデータを例に取り出し方法をまとめます。

ドラクエに関するこちらのDataFrameをdfとします。

特定のカラム(列)を取り出す

特定のカラムは、df[‘カラム名’]、またはdf.カラム名で取り出せます。

df['HP']

戦士 120
勇者 110
僧侶 75
魔法使い 50
Name: HP, dtype: int32

df.HP

戦士 120
勇者 110
僧侶 75
魔法使い 50
Name: HP, dtype: int32

カラムを2本以上取り出すとDataFrameのままですが、今回のように1本だけ取り出すとSeriesの形になります。

1本取り出す場合もDataFrameのままにしたいなら、角カッコ[ ]で括ってください。

df[['HP']]

特定のラベル(行)を取り出す

df.iloc[行番号]で取り出せます。ilocがつくことにご注意ください。

df.iloc[0]

HP 120
MP 0
Name: 戦士, dtype: int32

DataFrameのままにしたいなら、角カッコ[ ]で括ります。

df.iloc[[0]]

特定のエリアを取り出す

例えば、1行1列目だけを取り出すならこのようにします。

df.iloc[0:1,0:1]

簡単です。

なお、数字ではなく、ラベル(index)やカラムの名前でエリアを指定するならilocではなくlocを使います。

df.loc['戦士','HP']

120

df.loc[['戦士'],['HP']]

最後に

DataFrameの中のデータをfor文で順番に処理していく方法をよく使います。

その方法はこちらを参照してください。