Để tạo DataFrame từ các cấp độ của MultiIndex, chúng ta sử dụng phương thức to_frame() cơ bản nhất.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex có tên cấp độ
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
3. Chuyển thành DataFrame
dataFrame = multiIndex.to_frame()
Ví dụ hoàn chỉnh
import pandas as pd
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("MultiIndex:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)
# Chuyển thành DataFrame mặc định
dataFrame = multiIndex.to_frame()
print("\nDataFrame:\n", dataFrame)
Kết quả đầu ra
MultiIndex:
MultiIndex([(1, 'John'), (2, 'Tim'), (3, 'Jacob'), (4, 'Chris')], names=['ranks', 'student'])
Các cấp độ:
[[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]
DataFrame:
ranks student
ranks student
1 John 1 John
2 Tim 2 Tim
3 Jacob 3 Jacob
4 Chris 4 Chris
Giải thích cấu trúc kết quả
DataFrame kết quả có:
- Index: MultiIndex gốc (cặp (ranks, student)).
- Columns: ['ranks', 'student'] - tên cấp độ của MultiIndex.
- Values: Mỗi hàng lặp lại giá trị của index.
Đây là hành vi mặc định: to_frame() giữ MultiIndex làm index và dùng tên cấp độ làm tên cột.
Khi nào dùng to_frame()?
- Chuyển MultiIndex thành DataFrame để thao tác cột.
- Reset index:
mi.to_frame().reset_index(drop=True). - Export ra CSV/Excel với index=False.