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を取得する方法についてでした。
最後までお読みいただき、ありがとうございました。