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で文字列やリスト、データフレームからインデックスを指定して値を取得する方法|スライス操作