【Pandas】データ抽出(at, iat, iloc, loc, 条件指定)
使用データ
以下の例では次のDataFrameを使用しています。
import pandas as pd df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], index=["Zero", "One", "Two"], columns=["X", "Y", "Z"])

iat(index・column番号から)
- dataFrame.iat[index番号, columns番号]によりアクセスする。
- 負の数-nを指定すると、末尾からn番目の要素を取り出す。

| コード | 取得できる値 |
|---|---|
| df.iat[2, 0] | 7 |
| df.iat[2, -1] | 9 |
| df.iat[-2, 1] | 5 |
at(index・column名から)
dataFrame.at[index名, columns名] によりアクセスする。

| コード | 取得できる値 |
|---|---|
| df.at['One', 'X'] | 4 |
| df.at['Two', 'Z'] | 9 |
iloc(番号による範囲取得)
- dataFrame.iloc[n]とすることで、n番目のindexのみを取得することができる。
- ilocにおいても、iatと同じように負の数を指定することが可能。
- 「m:n」とすることで、m ~ n-1番目のみを取得することができる。n番目は含まれない点に注意。

loc(文字列による範囲取得)
locも基本的な考え方は、ilocと同様である。
- dataFrame.loc[:, 'A']
- dataFrame['A']
- dataFrame.A
3は短く記述できるが、index名にスペースなどの特殊文字を含む場合は使用できない。個人的には2がオススメ。

条件を満たす行 or 列のみ取得
- dataFrame[条件式]とすることで、条件式を満たすindexのみを取得。
- dataFrame.loc[条件式]とすることでも、同様の処理が可能。
- 条件を複数指定でき、各条件を括弧で括った上で、andの場合は「&」、orの場合は「|」で条件を列挙する。
- また、dataFrame.loc[条件式, column名]とすることで、条件を満たすcolumnsのみを抽出することも可能。
