蛇使いな彼女BLOG
【第14回】 ライブラリ(pandas)の使い方④―ilocを使った抽出
2020.07.02
今回は前回出した問題、
『ilocを使ってdfから2行目と3行目を取り出すには???』
この答と間違い例を紹介します。
今回は2行目と3行目だけなので範囲指定する方法と復数行を指定する方法が使えます。
□正解↓
■間違い例↓
以下に正解と間違いを比べながらちょっとだけ解説しますね。
※前回書き忘れてましたが、Pythonで配列を扱う場合スタートは1ではなく0始まりです。
(繰り返し構文を書くときや、配列生成するときにも共通します)
なので、任意のindexが1からスタートしている場合でも抽出の際、行番号は0と指定します。
行番号 index
0 ・・・1行目
1 ・・・2行目
2 ・・・3行目
3 ・・・4行目
︙
■解説1
範囲指定して抽出する方法についてなぜ正解がdf.iloc[2:4]でdf.iloc[2:3]が間違いなのか?
iloc[2:3] の意味は2行目から3行目までではなく、行番号で数えて2行目から3行目未満です。
なので
iloc[2:3]は2行目から3行目未満の意味→間違い
iloc[2:4]は2行目から4行目未満の意味→正解○
■解説2
行列指定して抽出する場合iloc[行番号,列番号] とコンマで区切って指定します。
今回のように複数行抽出したい場合はiloc[[行番号,行番号],列番号] と行番号のスペースを更に括弧で括って記載します。
(複数列の場合も同じ)
ということで
iloc[2,3]は2行目、3列目→ 間違い✕
iloc[[2,3],:] は2行目と3列目、すべての列→正解○
と、まあこんな感じなんですが
正直私もよくあやふやになってエラー表示くらうことがあるので、実際にコーディングしていく中で徐々に覚えていくのが一番いいんじゃないかなーと思う!