Chuyển đến nội dung chính

Hướng dẫn Reset Index trong Pandas

Tìm hiểu phương thức reset_index() của pandas để đặt lại chỉ mục của DataFrame. Khám phá các tùy chọn khác nhau của phương thức này và cách đặt lại chỉ mục cho DataFrame đơn giản và nhiều cấp.
Đã cập nhật 5 thg 10, 2026  · 8 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Sau khi biến đổi và lọc một tập dữ liệu lớn, bạn có thể thu được đúng DataFrame mình cần. Tuy nhiên, DataFrame này vẫn giữ chỉ mục gốc, có thể không tuần tự. Trong những trường hợp như vậy, bạn cần đặt lại chỉ mục của DataFrame.

Trong hướng dẫn này, chúng ta sẽ thảo luận về phương thức reset_index() của pandas, được dùng để đặt lại chỉ mục của DataFrame. Chúng ta sẽ khám phá các tùy chọn khác nhau có sẵn với phương thức này. Ngoài ra, chúng ta sẽ đề cập cách đặt lại chỉ mục cho DataFrame đơn cấp và đa cấp.

Để thực hành đặt lại chỉ mục DataFrame, chúng ta sẽ dùng bộ dữ liệu hàng không. Chúng ta sẽ sử dụng Datalab của Datacamp, một môi trường tương tác được thiết kế riêng cho phân tích dữ liệu bằng Python, giúp bạn dễ dàng theo dõi hướng dẫn này.

reset_index là gì?

Phương thức reset_index trong Pandas đặt lại chỉ mục của DataFrame về mặc định. Sau các thao tác như lọc, nối hay gộp, chỉ mục có thể không còn tuần tự. Phương thức này giúp thiết lập lại một chỉ mục sạch, tuần tự. Nếu DataFrame có MultiIndex, nó có thể loại bỏ một hoặc nhiều cấp.

Cú pháp cơ bản:

df.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill="")

Tham số:

  1. level: Trong DataFrame nhiều cấp, nhận tên cấp hoặc vị trí của chỉ mục hàng cần loại bỏ khỏi chỉ mục. Mặc định, loại bỏ tất cả các cấp.
  2. drop: Cờ Boolean. True – Chỉ mục hàng hiện tại không được thêm làm cột mới trong DataFrame. False (mặc định) – Chỉ mục hàng hiện tại được thêm làm cột mới trong DataFrame.
  3. inplace: Xác định trả về một DataFrame mới hay cập nhật DataFrame hiện có. Là cờ Boolean, mặc định là False.
  4. col_level: Nếu cột có nhiều cấp, xác định cấp nào sẽ chèn nhãn vào. Mặc định chèn vào cấp đầu tiên.
  5. col_fill: Nếu cột có nhiều cấp, xác định cách đặt tên cho các cấp còn lại. Nếu None, tên chỉ mục được lặp lại.

Giá trị trả về:

DataFrame với chỉ mục mới hoặc None nếu inplace=True.

Cách sử dụng reset_index

Nếu bạn đọc tệp CSV bằng phương thức read_csv() của pandas mà không chỉ định chỉ mục, DataFrame kết quả sẽ có chỉ mục mặc định dạng số nguyên, bắt đầu từ 0 và tăng 1 cho mỗi hàng tiếp theo.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df

đọc bộ dữ liệu hàng không

Trong một số trường hợp, bạn có thể muốn nhãn hàng mô tả hơn. Để làm được điều này, bạn có thể đặt một trong các cột của DataFrame làm chỉ mục (nhãn hàng). Khi sử dụng phương thức read_csv() để tải dữ liệu từ tệp CSV, hãy chỉ định cột mong muốn cho chỉ mục bằng tham số index_col.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv", index_col="Operating Airline IATA Code").head()
df

đặt cột Operating Airline IATA Code làm chỉ mục mới của dataframe

Ngoài ra, bạn có thể dùng phương thức set_index() để đặt bất kỳ cột nào của DataFrame làm chỉ mục:

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df.set_index("Operating Airline IATA Code", inplace=True)
df

Lưu ý rằng đoạn mã sẽ thay đổi DataFrame gốc.

đặt cột Operating Airline IATA Code làm chỉ mục mới của dataframe bằng phương thức set_index

Nếu bạn cần khôi phục chỉ mục số mặc định thì sao? Đây là lúc phương thức Pandas reset_index() phát huy tác dụng.

df.reset_index()

đặt lại chỉ mục của dataframe

Ví dụ cho thấy sau khi đặt cột 'Operating Airline IATA Code' làm chỉ mục, reset_index được dùng để đưa DataFrame về chỉ mục số nguyên mặc định.

Ứng dụng thực tế của reset_index

Phương thức reset_index() trong Pandas là công cụ mạnh để sắp xếp lại chỉ mục DataFrame khi làm việc với dữ liệu đã lọc, DataFrame được nối, hoặc chỉ mục nhiều cấp.

Tìm hiểu thêm về tái cấu trúc DataFrame từ dạng rộng sang dạng dài, cách stack và unstack hàng và cột, cũng như cách xử lý DataFrame đa chỉ mục trong khóa học trực tuyến của chúng tôi.

Đặt lại sau khi lọc

Khi bạn lọc một DataFrame, chỉ mục gốc được giữ nguyên. Sử dụng reset_index, bạn có thể đánh lại chỉ mục cho DataFrame đã lọc.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")

Hãy lọc dữ liệu để chỉ chọn các hàng có "landing count" lớn hơn 1000. Sau khi lọc, chỉ mục có thể không tuần tự. Khi đó, bạn có thể dùng phương thức reset_index để đặt lại chỉ mục cho DataFrame đã lọc.

filtered_df = df[df["Landing Count"] > 1000].head()
filtered_df

daraframe nơi

Hình trên cho thấy DataFrame đã được lọc theo điều kiện áp dụng, nhưng chỉ mục chưa tuần tự. Giờ hãy dùng reset_index để đánh lại chỉ mục cho DataFrame đã lọc và đảm bảo chỉ mục tuần tự. Cách thực hiện như sau:

filtered_df_reset = filtered_df.reset_index()
filtered_df_reset

Chỉ mục được đặt về tuần tự

Hành vi mặc định của phương thức này là thay chỉ mục hiện có của DataFrame bằng chỉ mục dạng số nguyên mặc định và chuyển chỉ mục cũ thành một cột mới với cùng tên (hoặc "index" nếu không có tên).

Vì vậy, hãy dùng tham số drop=True để đảm bảo chỉ mục cũ không được thêm làm cột mới.

filtered_df_reset = filtered_df.reset_index(drop=True)
filtered_df_reset

dùng tham số drop để loại chỉ mục cũ

Tuyệt vời! Chỉ mục giờ đã được đặt lại về chỉ mục số nguyên mặc định (0, 1, 2, …), gọn gàng và tuần tự.

Nối hoặc gộp

Khi kết hợp các DataFrame, DataFrame kết quả có thể chứa chỉ mục trùng lặp hoặc không tuần tự. Đặt lại chỉ mục sẽ tạo một chỉ mục gọn gàng, tuần tự.

Giả sử bạn có hai DataFrame và muốn nối chúng. Tôi đã tạo hai DataFrame từ bộ dữ liệu hàng không để minh họa.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")
split_index = int(df.shape[0] / 2)
df1 = df[:split_index].head()
df2 = df[split_index:].head()

Đây là df1:

dataframe 1 trích từ dataframe gốc

Đây là df2:

dataframe 2 trích từ dataframe gốc

Hãy nối hai DataFrame df1 và df2.

df_concat = pd.concat([df1, df2])

dataframe sau khi nối

Dữ liệu cho thấy các chỉ mục không tuần tự. Chúng ta cần đặt lại chỉ mục của DataFrame sau khi nối để nó tuần tự.

Hãy đặt lại chỉ mục của DataFrame bằng phương thức reset_index() trong pandas.

df_concat.reset_index()

Cần loại bỏ cột chỉ mục

Đây là kết quả sau khi đặt lại chỉ mục của DataFrame. Phương thức reset_index chuyển chỉ mục cũ thành một cột mới. Để loại bỏ cột thừa này, bạn cần dùng tham số drop=True.

df_concat.reset_index(drop=True)

đã loại cột chỉ mục

Xử lý chỉ mục nhiều cấp

Với DataFrame có chỉ mục phân cấp (nhiều cấp), reset_index có thể được dùng để đơn giản hóa DataFrame bằng cách chuyển chỉ mục nhiều cấp về thành các cột.

Hãy xem ví dụ về một DataFrame có chỉ mục nhiều cấp.

import pandas as pd
df = pd.read_csv(
    "airlines_dataset.csv", index_col=["Aircraft Model", "Operating Airline IATA Code"]
).head()

nhiều chỉ mục trong một dataframe

Nếu bạn kiểm tra chỉ mục của nó, bạn sẽ thấy đây không phải chỉ mục DataFrame thông thường mà là một đối tượng MultiIndex

nhiều chỉ mục trong dataframe

Giờ, hãy sử dụng phương thức reset_index() của pandas, phương thức sẽ loại bỏ tất cả các cấp của MultiIndex:

df.reset_index()

multiindex giờ trở thành tuần tự

Bạn có thể thấy cả hai cấp của MultiIndex đã được chuyển thành các cột thông thường của DataFrame, đồng thời chỉ mục được đặt lại về dạng số nguyên mặc định.

Bạn cũng có thể dùng tham số level để loại bỏ các cấp được chọn khỏi chỉ mục DataFrame. Nó sẽ chuyển các cấp đã chọn thành các cột thông thường trừ khi bạn chọn loại bỏ hoàn toàn thông tin này khỏi DataFrame bằng tham số drop. Hãy xem thử:

df.reset_index(level=["Aircraft Model"])

Chỉ còn Operating Airline IATA Code làm chỉ mục

Hình trên cho thấy "Aircraft Model" giờ là một cột thông thường trong DataFrame. Chỉ còn "Operating Airline IATA Code" làm chỉ mục.

Giờ, nếu bạn không muốn chỉ mục được nêu trong danh sách trở thành cột thông thường, bạn có thể kết hợp các tham số drop và level để loại bỏ nó khỏi DataFrame.

df.reset_index(level=["Aircraft Model"], drop=True)

đã loại tên cột Aircraft Model

Chỉ mục 'Aircraft Model' đã bị loại khỏi chỉ mục và DataFrame. Chỉ mục còn lại, 'Operating Airline IATA Code', được giữ làm chỉ mục hiện tại của DataFrame.

Sử dụng nâng cao và Mẹo

Giữ lại chỉ mục

Giả sử bạn gộp hai DataFrame; DataFrame sau khi gộp sẽ không còn chỉ mục tuần tự, như hình dưới đây.

dataframe tạm thời

Hãy đặt lại chỉ mục của DataFrame bằng phương thức reset_index() của pandas.

df.reset_index()

cần loại cột chỉ mục không cần thiết khỏi chỉ mục

Tham số drop quyết định giữ lại chỉ mục cũ dưới dạng cột trong DataFrame sau khi đặt lại chỉ mục hay loại bỏ hoàn toàn. Mặc định (drop=False), chỉ mục cũ được giữ lại, như minh họa trong tất cả ví dụ trước. Ngoài ra, đặt drop=True sẽ loại bỏ chỉ mục cũ khỏi DataFrame sau khi đặt lại.

df.reset_index(drop=True)

đã xóa cột chỉ mục

Thao tác tại chỗ (inplace)

Chỉnh sửa DataFrame ngay tại chỗ bằng tham số inplace để tránh tạo DataFrame mới.

Giả sử bạn có DataFrame dưới đây:

chỉ mục không tuần tự

Đặt tham số inplace thành True đảm bảo các thay đổi được áp dụng trực tiếp lên DataFrame gốc, tránh tạo một DataFrame riêng.

df_concat.reset_index(drop=True, inplace=True)
df_concat

chỉ mục đã tuần tự

Xử lý trùng lặp

Quản lý chỉ mục trùng lặp bằng cách đặt lại và đánh chỉ mục phù hợp.

Giả sử bạn có dữ liệu với chỉ mục trùng lặp.

dataframe với chỉ mục trùng lặp

Dùng reset_index() với drop=True và inplace=True đảm bảo DataFrame kết quả có chỉ mục liên tục, bắt đầu từ 0 và tăng tuần tự.

df.reset_index(drop=True, inplace=True)

chỉ mục đã tuần tự

Các lỗi thường gặp và cách khắc phục với Pandas reset_index

  1. Không đặt lại được chỉ mục: Đảm bảo bạn không dùng tham số inplace=False nếu bạn mong muốn DataFrame gốc được chỉnh sửa. Nếu inplace đặt là False, một DataFrame mới được trả về và DataFrame gốc không thay đổi.
  2. Mất dữ liệu: Hãy cẩn trọng với tham số drop để tránh vô tình làm mất dữ liệu. Loại chỉ mục sẽ xóa vĩnh viễn các giá trị chỉ mục hiện tại.

Ví dụ thực hành reset_index

Hãy áp dụng những gì chúng ta đã học về đặt lại chỉ mục DataFrame và xem việc đặt lại chỉ mục hữu ích thế nào khi loại bỏ giá trị khuyết.

Bộ dữ liệu hàng không không có giá trị khuyết, vì vậy chúng ta sẽ dùng bộ dữ liệu Phim và Chương trình TV trên Netflix. Bộ dữ liệu này có giá trị khuyết, rất phù hợp để minh họa reset_index().

import pandas as pd
df = pd.read_csv("netflix_shows.csv")
df.head()

dataframe có giá trị NaN

Bạn có thể thấy có các giá trị khuyết trong DataFrame. Hãy loại các hàng chứa giá trị khuyết bằng phương thức dropna().

df.dropna(inplace=True)
df.head()

dataframe không còn giá trị NaN

Các hàng chứa giá trị NaN đã được loại khỏi DataFrame. Tuy nhiên, chỉ mục không còn liên tục (0, 1, 2, 4). Hãy đặt lại:

df.reset_index()

cần loại cột chỉ mục không cần thiết

Giờ đây, chỉ mục đã liên tục; tuy nhiên, vì chúng ta không truyền rõ ràng tham số drop, chỉ mục cũ đã được chuyển thành một cột với tên mặc định index. Hãy loại bỏ hoàn toàn chỉ mục cũ khỏi DataFrame:

df.reset_index(drop=True)

bộ dữ liệu bình thường

Chúng ta đã loại bỏ hoàn toàn chỉ mục cũ không còn ý nghĩa, và chỉ mục hiện tại giờ liên tục. Bước cuối cùng là lưu các thay đổi này vào DataFrame gốc bằng tham số inplace:

df.reset_index(drop=True, inplace=True)

Kết luận

Bạn đã học cách hàm reset_index trong Pandas quản lý hiệu quả chỉ mục của DataFrame. Dù là xử lý dữ liệu đã lọc, DataFrame được nối hay chỉ mục nhiều cấp phức tạp, reset_index đều đảm bảo DataFrame gọn gàng và có tổ chức. Các tham số của nó giúp xử lý đa dạng kịch bản chỉ mục trong các tác vụ thao tác dữ liệu.

Tiếp tục học cách dùng các hàm tương tự reset_index với lộ trình nghề nghiệp Data Analyst với Python của DataCamp. Bạn cũng có thể đọc Hướng dẫn Python List Index() nếu bạn đang làm việc với list và muốn tìm hiểu về hàm index() áp dụng cho list. 


Satyam Tripathi's photo
Author
Satyam Tripathi
LinkedIn
Chủ đề
Python

Top khóa học về pandas

Khóa học

Xử lý dữ liệu với pandas

4 giờ
567.9K
Tìm hiểu cách nhập và làm sạch dữ liệu, tính toán thống kê và tạo trực quan hóa với pandas.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm