【pandas】DataFrameの行・列・要素を指定・抽出する方法(loc・iloc・at・iatの使い方)

今回はデータフレームで行・列・要素を指定して取得する方法をまとめてみました。

主な方法は4つ「loc・iloc・at・iat」です。

それぞれでできることやできないことがあるので一つ一つ見ていきましょう。

今回は以下のデータフレームを使っていきます。

loc・iloc・at・iatの特徴

メソッド引数取得できるものスライス条件抽出
loc行名・列名行・列・要素
iloc行番号・列番号行・列・要素
at行名・列名要素のみ××
iat行番号・列番号要素のみ××

行番号や列番号は行・列に対して0、1、…と自動的に割り振られています。

上のDataFrameの場合行番号は0~3、列番号は0~2になります。

おそらく、locはlocationでiはindexという意味なんだと思います。

なので、iがついているものは番号で指定するということでしょう。

行を指定する方法

  • df.loc[行名]
  • df.iloc[行番号]
  • at、iatは使えない

例えば、1行目を指定する方法は2つです。row1の行番号は0です。

最終行を指定する方法

ilocの場合は行番号を渡しているので、-1を指定すると最終行を取得することができます。

リストのインデックスと似ていますね。

行をスライスする方法

  • df.loc[ 行名 : 行名 ]
  • df.iloc[ 行番号 : 行番号 ]
  • at、iatは使えない

リストのスライスと同じ様にコロン(:)を使って書きます。

データフレームの行のスライス

列を指定する方法

  • df[列名]
  • df.loc[:, 列名]
  • df.iloc[:, 列番号]
  • at、iatは使えない

locilocの引数は行→列の順になっています。

コロン(:)だけ書かれているのはすべての行を指定するという意味です。

例えば、col2を指定するときは3通りがあります。

最終列を取得する方法

これも、行の場合と同じようにー1を渡すとOKです。

列をスライスする方法

  • df.loc[:, 列名:列名]
  • df.iloc[:, 列番号:列番号]
  • at、iatは使えない

例えば、col1とcol2を取得する方法を考えましょう。

データフレームの列のスライス

行と列をスライスする方法

引数には行のスライス→列のスライスの順で渡しましょう。

行と列でスライス

要素を指定する方法

行→列の順で渡すと要素のみ取得できます。

まとめ

いかがだったでしょうか。

今回はDataFrameの行・列・要素を指定する方法やスライスする方法をまとめてみました。

これらの方法は必ずと言っていいほど毎回使うものなので、

覚えておいた方が作業がスムーズに進みますね。

また、応用することで条件抽出などもできます。それに関しては別記事で解説します。