Để tạo DataFrame từ các cấp độ của MultiIndex và đặt tên cột tùy chỉnh, chúng ta sử dụng phương thức MultiIndex.to_frame() với tham số name.
Các bước thực hiện
1. Import thư viện
import pandas as pd
2. Tạo MultiIndex (không tên cấp độ)
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
multiIndex = pd.MultiIndex.from_arrays(arrays)
3. Chuyển thành DataFrame với tên cột mới
Tham số name=['One', 'Two'] đặt tên cho các cột:
dataFrame = multiIndex.to_frame(name=['One', 'Two'])
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)
print("MultiIndex:\n", multiIndex)
print("\nCác cấp độ:\n", multiIndex.levels)
# Tạo DataFrame, đặt tên cột 'One', 'Two'
dataFrame = multiIndex.to_frame(name=['One', 'Two'])
print("\nDataFrame:\n", dataFrame)
Kết quả đầu ra
MultiIndex:
MultiIndex([(1, 'John'), (2, 'Tim'), (3, 'Jacob'), (4, 'Chris')], )
Các cấp độ:
[[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]
DataFrame:
One Two
1 John 1 John
2 Tim 2 Tim
3 Jacob 3 Jacob
4 Chris 4 Chris
Lưu ý về kết quả
Kết quả hiển thị hơi nhầm lẫn do index của DataFrame trùng với cột 'One'. Thực tế DataFrame có cấu trúc:
One Two 1 John 1 2 Tim 2 3 Jacob 3 4 Chris 4
Các tham số hữu ích của to_frame()
| Tham số | Mô tả |
|---|---|
name | Danh sách tên cột (nếu MultiIndex không có tên cấp độ) |
index | True/False - có dùng MultiIndex làm index DataFrame không (mặc định True) |