【毎日Python】Pythonで行名と列名を指定して値を取得する方法|DataFrame.loc

【毎日Python】Pythonで行名と列名を指定して値を取得する方法|DataFrame.loc
import pandas as pd
import numpy as np

df = pd.DataFrame({'col01': ['A', 'B', 'C', 'D', 'E'],
                   'col2':[ 'a', 'c','d', 'b', 'e'],
                   'col03': [110, 130, 140, 120, 150]},
                  index=['idx01', 'idx02', 'idx03','idx04','idx05'])
df
col01col02col03
idx01Aa110
idx02Cc130
idx03Dd140
idx04Bb120
idx05Ee150

Pythonで任意の列名・行名から値を取得する方法です。
使用するのは、PythonのPandasライブラリのlocメソッドです。
今回はこのようなデータフレームを用意します。
値の取得方法には、1行のみを指定する方法と、スライスで範囲を指定する方法の2つがあります。

df.loc[['idx04']]
col01col02col03
idx04Bb120

まず、単独の行を指定して値を取得してみましょう。
二重の角括弧の中にカラム名を指定して実行します。

単独の行を指定して値を取得できました。

次に、スライスで列の範囲を指定して値を取得してみましょう。
角括弧の中に、行と列の範囲をカンマで区切って指定します。
今回は行名はすべて表示させたいため、コロンで指定します。
実行します。

df.loc[:,'col01':'col02']
col01col02
idx01Aa
idx02Cc
idx03Dd
idx04Bb
idx05Ee

1列目と2列目のすべての値を取得できました。

df.loc['idx01':'idx03','col01':'col02']
col01col02
idx01Aa
idx02Cc
idx03Dd

行も指定して値を取得してみましょう。
実行します。
値を取得できました。

なお、行番号や列番号を指定して値を取得する場合は同じくPandasライブラリのilocメソッドを使用します。
番号を指定する以外の方法は先程のlocメソッドと同様です。
実行します。

df.iloc[1:4,1:3]
col02col03
idx02c130
idx03d140
idx04b120

行番号や列番号から指定した範囲の値を取得することができました。

longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-122.0537.3727.03885.0661.01537.0606.06.6085344700.0
1-118.3034.2643.01510.0310.0809.0277.03.5990176500.0
2-117.8133.7827.03589.0507.01484.0495.05.7934270500.0
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-122.0537.3727.03885.0661.01537.0606.06.6085344700.0
2-117.8133.7827.03589.0507.01484.0495.05.7934270500.0
8-122.8438.4015.03080.0617.01446.0599.03.6696194400.0
9-118.0234.0831.02402.0632.02830.0603.02.3333164200.0
13-117.0332.9716.03936.0694.01935.0659.04.5625231200.0
..............................
2988-122.0136.9743.02162.0509.01208.0464.02.5417260900.0
2991-117.1734.2813.04867.0718.0780.0250.07.1997253800.0
2993-117.9133.6037.02088.0510.0673.0390.05.1048500001.0
2995-119.8634.4223.01450.0642.01258.0607.01.1790225000.0
2996-118.1434.0627.05257.01082.03496.01036.03.3906237200.0

1233 rows × 9 columns

関連メソッド

【毎日Python】Pythonのデータフレームで特定の値の要素を抽出する方法|isin

【毎日Python】Pythonでインデックスから行番号、カラムから列番号を取得する方法|pandas.index.get_loc

【毎日Python】Pythonで文字列やリスト、データフレームからインデックスを指定して値を取得する方法|スライス操作

【毎日Python】Pythonでマルチインデックスのデータフレームからデータを取得する方法|DataFrame.xs