Pandas の DataFrame リセットインデックス

このチュートリアルでは、pandas.DataFrame.reset_index()
を使って Pandas DataFrame のインデックスをリセットする方法を説明します。reset_index()
メソッドは、0
から (DataFrame-1 の行数)
までの範囲の数値で、DataFrame のインデックスをデフォルトのインデックスに設定します。
Pandas DataFrame reset_index()
メソッド
構文
DataFrame.reset_index(level=None,
drop=False,
inplace=False,
col_level=0,
col_fill='')
pandas.DataFrame.reset_index()
メソッドを使用してデータフレームのインデックスをリセットする
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame({
'Name': ['Alice', 'Steven', 'Neesham', 'Chris', 'Alice'],
'Age': [17, 20, 18, 21, 15],
'City': ['New York', 'Portland', 'Boston', 'Seattle', 'Austin'],
'Grade': ['A', 'B-', 'B+', 'A-', 'A']
}, index=roll_no)
print(student_df)
出力:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
出力に表示されているように、5 行 4 列の DataFrame があるとします。また、DataFrame にはインデックスが設定されています。
DataFrame のインデックスをリセットする DataFrame の初期インデックスを列として保持する
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame({
'Name': ['Alice', 'Steven', 'Neesham', 'Chris', 'Alice'],
'Age': [17, 20, 18, 21, 15],
'City': ['New York', 'Portland', 'Boston', 'Seattle', 'Austin'],
'Grade': ['A', 'B-', 'B+', 'A-', 'A']
}, index=roll_no)
print("Initial DataFrame:")
print(student_df)
print("")
print("DataFrame after reset_index:")
student_df.reset_index(inplace=True, drop=False)
print(student_df)
出力:
Initial DataFrame:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
DataFrame after reset_index:
index Name Age City Grade
0 501 Alice 17 New York A
1 502 Steven 20 Portland B-
2 503 Neesham 18 Boston B+
3 504 Chris 21 Seattle A-
4 505 Alice 15 Austin A
DataFrame student_df
のインデックスをデフォルトのインデックスにリセットします。inplace=True
は元の DataFrame 自体に変更を加えます。drop=False
を指定した場合は、reset_index()
メソッドを使った後で初期値のインデックスを DataFrame のカラムに追加します。
DataFrame のインデックスをリセットする DataFrame の初期インデックスを削除する
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame({
'Name': ['Alice', 'Steven', 'Neesham', 'Chris', 'Alice'],
'Age': [17, 20, 18, 21, 15],
'City': ['New York', 'Portland', 'Boston', 'Seattle', 'Austin'],
'Grade': ['A', 'B-', 'B+', 'A-', 'A']
}, index=roll_no)
print("Initial DataFrame:")
print(student_df)
print("")
print("DataFrame after reset_index:")
student_df.reset_index(inplace=True, drop=True)
print(student_df)
出力:
Initial DataFrame:
Name Age City Grade
501 Alice 17 New York A
502 Steven 20 Portland B-
503 Neesham 18 Boston B+
504 Chris 21 Seattle A-
505 Alice 15 Austin A
DataFrame after reset_index:
Name Age City Grade
0 Alice 17 New York A
1 Steven 20 Portland B-
2 Neesham 18 Boston B+
3 Chris 21 Seattle A-
4 Alice 15 Austin A
DataFrame student_df
のインデックスをデフォルトのインデックスにリセットします。メソッドで drop=True
を指定しているので、初期インデックスは DataFrame から削除されます。
行を削除した後の DataFrame のインデックスをリセットする
import pandas as pd
roll_no = [501, 502, 503, 504, 505]
student_df = pd.DataFrame({
'Name': ['Alice', 'Steven', 'Neesham', 'Chris', 'Alice'],
'Age': [17, 20, 18, 21, 15],
'City': ['New York', 'Portland', 'Boston', 'Seattle', 'Austin'],
'Grade': ['A', 'B-', 'B+', 'A-', 'A']
})
student_df.drop([2, 3], inplace=True)
print("Initial DataFrame:")
print(student_df)
print("")
student_df.reset_index(inplace=True, drop=True)
print("DataFrame after reset_index:")
print(student_df)
出力:
Initial DataFrame:
Name Age City Grade
0 Alice 17 New York A
1 Steven 20 Portland B-
4 Alice 15 Austin A
DataFrame after reset_index:
Name Age City Grade
0 Alice 17 New York A
1 Steven 20 Portland B-
2 Alice 15 Austin A
出力を見るとわかるように、行を削除した後にインデックスが欠落しています。このような場合は reset_index()
メソッドを用いれば、値が欠落していないインデックスを利用することができます。
初期インデックスを DataFrame のカラムに配置したい場合は、reset_index()
メソッドで drop=False
を利用します。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn