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

lok
こつこつPython
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
col01 col02 col03
idx01 A a 110
idx02 C c 130
idx03 D d 140
idx04 B b 120
idx05 E e 150

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

df.loc[['idx04']]
col01 col02 col03
idx04 B b 120

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

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

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

df.loc[:,'col01':'col02']
col01 col02
idx01 A a
idx02 C c
idx03 D d
idx04 B b
idx05 E e

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

df.loc['idx01':'idx03','col01':'col02']
col01 col02
idx01 A a
idx02 C c
idx03 D d

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

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

df.iloc[1:4,1:3]
col02 col03
idx02 c 130
idx03 d 140
idx04 b 120

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

longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value
0 -122.05 37.37 27.0 3885.0 661.0 1537.0 606.0 6.6085 344700.0
1 -118.30 34.26 43.0 1510.0 310.0 809.0 277.0 3.5990 176500.0
2 -117.81 33.78 27.0 3589.0 507.0 1484.0 495.0 5.7934 270500.0
longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value
0 -122.05 37.37 27.0 3885.0 661.0 1537.0 606.0 6.6085 344700.0
2 -117.81 33.78 27.0 3589.0 507.0 1484.0 495.0 5.7934 270500.0
8 -122.84 38.40 15.0 3080.0 617.0 1446.0 599.0 3.6696 194400.0
9 -118.02 34.08 31.0 2402.0 632.0 2830.0 603.0 2.3333 164200.0
13 -117.03 32.97 16.0 3936.0 694.0 1935.0 659.0 4.5625 231200.0
... ... ... ... ... ... ... ... ... ...
2988 -122.01 36.97 43.0 2162.0 509.0 1208.0 464.0 2.5417 260900.0
2991 -117.17 34.28 13.0 4867.0 718.0 780.0 250.0 7.1997 253800.0
2993 -117.91 33.60 37.0 2088.0 510.0 673.0 390.0 5.1048 500001.0
2995 -119.86 34.42 23.0 1450.0 642.0 1258.0 607.0 1.1790 225000.0
2996 -118.14 34.06 27.0 5257.0 1082.0 3496.0 1036.0 3.3906 237200.0

1233 rows × 9 columns

関連メソッド

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

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

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

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

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト