Pythonの Pandasでindexを取得する方法 を、基礎から応用まで詳しく解説します。
目次
Indexとは?
PandasのDataFrameやSeriesには「行ラベル(index)」があり、データを識別するためのキーの役割を持っています。
SQLでいう「主キー」に近いイメージです。
例
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
print(df)
この場合、0, 1, 2 がindex(行ラベル)です。
Indexを取得する基本的な方法
df.index
DataFrame.index 属性でインデックス全体を取得できます。
print(df.index)
これは「0から始まり、3未満まで、1刻み」のインデックスを表します。
インデックスをリスト化
print(df.index.tolist())
Pythonのリストとして扱えるのでループなどに使いやすいです。
各行のindexを取得
for idx in df.index:
print(idx)
特定の行のindexを取得 (.ilocと.index)
row = df.iloc[1] # 2行目 (Bob)
print(row.name) # インデックス値
※ここでのrow.nameは「Seriesのindex名」ではなく「行インデックス値」です。
条件からindexを取得する方法
特定の条件を満たす行のindexを取得したいときは次のようにします。
例: age が30以上の行のindexを取得
idx = df[df["age"] >= 30].index
print(idx)
indexを指定・変更する方法
別の列をindexにする
df2 = df.set_index("name")
print(df2)
この場合、indexは"name"列になります。
indexをリセットする
df_reset = df2.reset_index()
print(df_reset)
応用例
indexから行を直接取得
print(df.loc[1])
indexが文字列の場合
df_named = df.set_index("name")
print(df_named.loc["Bob"])
indexの存在確認
print("Alice" in df_named.index) # True
print("David" in df_named.index) # False
まとめ
- 全体のindex →
df.index - リスト化 →
df.index.tolist() - 条件で取得 →
df[条件].index - 各行のindex →
row.name(iterrows()やilocで取得した行) - indexを変更 →
set_index() - indexを戻す →
reset_index()
以上、PythonのPandasでindexを取得する方法についてでした。
最後までお読みいただき、ありがとうございました。
