Pandas dataframe でインデックスによって行を選択する方法
多くの場合、インデックス値に基づいて pandas DataFrame 内の行を選択したい場合があります。
整数インデックスに基づいて行を選択する場合は、 .iloc関数を使用できます。
ラベルのインデックスに基づいて行を選択する場合は、 .loc関数を使用できます。
このチュートリアルでは、これらの各関数を実際に使用する方法の例を示します。
例 1: 整数インデックスに基づいて行を選択する
次のコードは、pandas DataFrame を作成し、 .ilocを使用して整数インデックス値4を持つ行を選択する方法を示しています。
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #createDataFrame df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B ']) #view DataFrame df A B 0 0.548814 0.715189 3 0.602763 0.544883 6 0.423655 0.645894 9 0.437587 0.891773 12 0.963663 0.383442 15 0.791725 0.528895 #select the 5th row of the DataFrame df. iloc [[4]] A B 12 0.963663 0.383442
同様の構文を使用して複数の行を選択できます。
#select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [[2, 3, 4]]
A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
または、範囲内のすべての行を選択することもできます。
#select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [2:5]
A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
例 2: ラベルのインデックスに基づいて行を選択する
次のコードは、pandas DataFrame を作成し、 .locを使用してインデックス ラベル3を持つ行を選択する方法を示しています。
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (0) #createDataFrame df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B ']) #view DataFrame df A B 0 0.548814 0.715189 3 0.602763 0.544883 6 0.423655 0.645894 9 0.437587 0.891773 12 0.963663 0.383442 15 0.791725 0.528895 #select the row with index label '3' df. loc [[3]] A B 3 0.602763 0.544883
同様の構文を使用して、異なるインデックス ラベルを持つ複数の行を選択できます。
#select the rows with index labels '3', '6', and '9'
df. loc [[3, 6, 9]]
A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
.iloc と .loc の違い
上の例は、 .ilocと.locの微妙な違いを示しています。
- .iloc は、整数インデックスに基づいて行を選択します。したがって、DataFrame の 5 行目を選択する場合は、最初の行はインデックス 0、2 行目はインデックス 1 にあるため、df.iloc[[4]] を使用します。
- .loc は、ラベル付きインデックスに基づいて行を選択します。したがって、インデックス ラベルが 5 の行を選択する場合は、df.loc[[5]] を直接使用します。
追加リソース
Pandas DataFrame で行番号を取得する方法
PandasでNaN値を含む行を削除する方法
Pandasでインデックス列を削除する方法