Giả sử bạn muốn chuyển từng hàng của DataFrame thành OrderedDict chứa các cặp (tên cột, giá trị) bao gồm cả index.
Giải pháp
- Tạo DataFrame.
- Sử dụng
df.itertuples(name='stud')để duyệt các hàng dưới dạng namedtuple. - Chuyển mỗi namedtuple thành OrderedDict bằng phương thức
_asdict().
Mã ví dụ
import pandas as pd
Students = [
('Raj', 13, 'Chennai', 80),
('Ravi', 12, 'Delhi', 90),
('Ram', 13, 'Chennai', 95)
]
df = pd.DataFrame(Students, columns=['Name', 'Age', 'City', 'Mark'])
print("DataFrame là:\n", df)
for row in df.itertuples(name='stud'):
dict_row = row._asdict()
print(dict_row)
Kết quả
DataFrame là:
Name Age City Mark
0 Raj 13 Chennai 80
1 Ravi 12 Delhi 90
2 Ram 13 Chennai 95
OrderedDict([('Index', 0), ('Name', 'Raj'), ('Age', 13), ('City', 'Chennai'), ('Mark', 80)])
OrderedDict([('Index', 1), ('Name', 'Ravi'), ('Age', 12), ('City', 'Delhi'), ('Mark', 90)])
OrderedDict([('Index', 2), ('Name', 'Ram'), ('Age', 13), ('City', 'Chennai'), ('Mark', 95)])
Giải thích:
itertuples(name='stud')trả về namedtuple với tên là 'stud', trường đầu tiên làIndex(chỉ số hàng)._asdict()chuyển namedtuple thànhOrderedDictbảo toàn thứ tự cột.- Cách này hữu ích khi cần xử lý từng hàng như một dictionary có thứ tự.