DataFrameのlocメソッドについて簡潔にまとめました.
以下のような操作を行っています.
- 特定の行を抽出したい
- 2列目と3列目だけが見たい
- 5行目以降の4列目が見たい
公式 Reference: pandas.DataFrame.loc
locメソッド
locメソッドはDataFrameの行・列の名前を指定して抽出する関数です.
以下の図は行・列(または行・列両方)を指定した際の範囲を示しています.
最初はあやふやになりますよね.
行・列の範囲をイメージしながらコードを見ていきましょう.
コードの書き方
まずはサンプルのDataFrameを作成します.
# DataFrameの作成
import pandas as pd
df = pd.DataFrame([[100, 300, 30000], [300, 50, 15000], [1000, 20, 20000]],
index = ['いか', 'えび', 'かに'],
columns = ['単価', '数量', '総額'])
df
単価 | 数量 | 総額 | |
---|---|---|---|
いか | 100 | 300 | 30000 |
えび | 300 | 50 | 15000 |
かに | 1000 | 20 | 20000 |
行の抽出(行の名前を指定)
locメソッドを用いて,行の名前を指定します.
これで「いか・えび」の行だけが抽出できます.
df.loc[['いか', 'えび']]
単価 | 数量 | 総額 | |
---|---|---|---|
いか | 100 | 300 | 30000 |
えび | 300 | 50 | 15000 |
列の抽出(列の名前を指定)
次は列の名前で指定してみましょう.
これで「単価・総額」列の全行が抽出できます.
# 列を指定したい
df.loc[:, ['単価', '総額']]
単価 | 総額 | |
---|---|---|
いか | 100 | 30000 |
えび | 300 | 15000 |
かに | 1000 | 20000 |
参考
[]
内の:,
は「すべての行」を指定するために必要です.
行・列の指定
さらに行・列の名前を同時に指定してみましょう.
「えび・かに」行の「単価」列だけが抽出できます.
# 行・列の指定
df.loc[['えび', 'かに'], ['単価']]
単価 | |
---|---|
えび | 300 |
かに | 1000 |
booleanでも指定ができる
locメソッドは行や列の名前だけでなく,boolean(=True
orFalse
)でも指定ができます.
これはTrue
となっている行(または列)を抽出できるということです.
早速見てみましょう.
# Trueである行を抽出
df.loc[[False, True, False]]
単価 | 数量 | 総額 | |
---|---|---|---|
えび | 300 | 50 | 15000 |
今回は行の数が3つなので,各行に対してTrue
orFalse
を指定しています.
※ 行数が指定するTrue
とFalse
の数と一致しないとエラーが出ます.1
参考
以下のようにすれば列を boolean で指定することも可能です.
df.loc[:, [False, True, False]]
上記のコードを実行するとTrue
の列である「数量」列が抽出されます.
なお,行・列の同時指定もできます.
ひとこと
DataFrameは慣れるまでは結構ややこしいですよね.
他にも行・列の番号で指定するilocメソッドなど,様々な関数があるので興味のある方は調べてみるといいと思います.
-
例えば
df.loc[[False, True]]
は行数3に対して2つしかTrue
とFalse
を指定していないのでエラーが出ます. ↩