# locを使った書き方
df.loc[:, 列名または列名のリスト]
# locを省略した書き方(上記と結果は同じ)
df[列名または列名のリスト]
pandasでは、このように同じ処理を複数の方法で書けることがあります。
次のように書くことで指定した条件で行を絞り込めることを学びました。
# locを使った書き方
df.loc[行の比較結果]
pandasでは、df[要素がブール値のSeries]と書くと、df.loc[要素がブール値のSeries]と解釈されます。
行の比較結果は要素がブール値のSeriesなので、上記はlocを使わずに次のように簡潔に書けます。
# locを省略した書き方(結果は同じ)
df[行の比較結果]
絞り込みをしたい場合、通常は、このdf[行の比較結果]
というシンプルな書き方をすると良いでしょう。しかし、解説で後述するようにシンプルな書き方ではできることが限られます。場合によってはdf.loc
を使う必要があります。
Name | Age | |
---|---|---|
0 | Alice | 17 |
1 | Bob | 24 |
2 | Carol | 29 |
df[df.Age >= 20]
Name | Age | |
---|---|---|
1 | Bob | 24 |
2 | Carol | 29 |
d
f[行の比較結果]
は、df.loc[行の比較結果]
と同じく更新にも使えます。
df[df.Age >= 20] = [["Ben", 14], ["Chuck", 15]]
Name | Age | |
---|---|---|
0 | Alice | 17 |
1 | Ben | 14 |
2 | Chuck | 15 |
df.loc[行の比較結果, ...]
とする時は、loc
を省略できません。
たとえば、df.loc[行の比較結果, 列の比較結果]
をdf[行の比較結果, 列の比較結果]
とは書けません。
具体的には、df.loc[df.Age >= 20, df.dtypes == int]
を以下のようにloc
を省略すると、TypeErrorになります。
df[df.Age >= 20, df.dtypes == int]
TypeError: (中略) is an invalid key
より一般的に言うと、df.loc[行の比較結果, 列の指定]
をdf[行の比較結果, 列の指定]
とは書けません。
コメント