Pandasで「行番号」や「列番号」を取得するにはいくつか方法があり、用途によって使い分けます。
ここでは 行番号(インデックス位置) と 列番号(カラム位置) をそれぞれ取得する方法を詳しく整理します。
目次
行番号を取得する方法
Pandasの行は「インデックス」で管理されていますが、必ずしも数値(0,1,2…)とは限らず、文字列や日付型の場合もあります。
そこで、行番号(位置情報)を扱うには以下の方法があります。
df.index
でインデックスを確認
import pandas as pd
df = pd.DataFrame({
"A": [10, 20, 30],
"B": [40, 50, 60]
}, index=["x", "y", "z"])
print(df.index) # Index(['x', 'y', 'z'], dtype='object')
この場合、行ラベルは "x","y","z"
ですが、行番号(位置)は 0,1,2 に対応しています。
行番号を整数位置で取得 (.iloc
)
print(df.iloc[0]) # 先頭行(0番目)
print(df.iloc[1]) # 1番目の行
iloc
は 整数ベースの行番号 で指定します。- 例えば
iloc[0]
は「最初の行」、iloc[-1]
は「最後の行」。
行番号(整数位置)を取り出す
range(len(df))
を使えば行番号をリスト化できます。
print(list(range(len(df)))) # [0, 1, 2]
あるいは、行ラベルを reset_index()
して行番号を明示的に列に追加する方法も便利です。
df_reset = df.reset_index()
print(df_reset)
これで行番号(0,1,2)が index
という列として追加されます。
列番号を取得する方法
列も「名前(ラベル)」でアクセスするのが基本ですが、列番号(位置)を取得する方法もあります。
列のリストを確認
print(df.columns) # Index(['A', 'B'], dtype='object')
ここで「A」は 0 番目、「B」は 1 番目に対応します。
列番号を求める (get_loc
)
Pandasの Index
オブジェクトには get_loc
で位置を調べる機能があります。
col_num = df.columns.get_loc("B")
print(col_num) # 1
列番号でアクセス (iloc
)
行と同じように .iloc
を使って列番号で指定可能です。
print(df.iloc[:, 0]) # 0番目の列(A)
print(df.iloc[:, 1]) # 1番目の列(B)
行番号・列番号をまとめて扱う方法
- 行番号と列番号を同時に指定するなら
.iloc
が最も直接的です。
print(df.iloc[1, 0]) # 1行目・0列目 → 20
- 逆に「行ラベルや列ラベル」から番号を求めたい場合は
get_loc
を使うのが定番です。
row_num = df.index.get_loc("y")
col_num = df.columns.get_loc("B")
print(row_num, col_num) # 1 1
まとめ
- 行番号(整数位置) →
iloc
かrange(len(df))
- 列番号(整数位置) →
columns.get_loc("列名")
- ラベルから番号を取得 →
index.get_loc("行ラベル")
やcolumns.get_loc("列ラベル")
- 番号から要素を取得 →
df.iloc[行番号, 列番号]
以上、Pandasの行番号と列番号を取得する方法についてでした。
最後までお読みいただき、ありがとうございました。