Membina Pandas DataFrames daripada Item Kamus Bersarang
Diberikan kamus bersarang dengan struktur yang menampilkan UserId sebagai peringkat teratas, Kategori sebagai yang kedua tahap, dan pelbagai atribut sebagai tahap ketiga, matlamatnya adalah untuk mencipta DataFrame panda dengan indeks hierarki. Setiap UserID harus muncul sebagai nilai indeks, manakala Kategori dan nilai atribut membentuk nama lajur.
Percubaan konvensional untuk membina DataFrame daripada kamus sedemikian boleh mengakibatkan indeks dan penetapan lajur yang salah. Untuk menangani perkara ini, pertimbangkan pendekatan berikut:
1. Membentuk Semula Kamus:
Satu penyelesaian melibatkan pembentukan semula kamus ke dalam format yang kekunci adalah tupel mewakili MultiIndex yang dikehendaki. Ini membenarkan penggunaan pd.DataFrame.from_dict dengan orient='index':
user_dict = { 12: {'Category 1': {'att_1': 1, 'att_2': 'whatever'}, 'Category 2': {'att_1': 23, 'att_2': 'another'}}, 15: {'Category 1': {'att_1': 10, 'att_2': 'foo'}, 'Category 2': {'att_1': 30, 'att_2': 'bar'}} } df = pd.DataFrame.from_dict({(i,j): user_dict[i][j] for i in user_dict.keys() for j in user_dict[i].keys()}, orient='index')
2. Menggabungkan DataFrames:
Sebagai alternatif, seseorang boleh membina DataFrame dengan membina kerangka data individu untuk setiap kategori dan pengguna, kemudian menggabungkannya:
user_ids = [] frames = [] for user_id, d in user_dict.iteritems(): user_ids.append(user_id) frames.append(pd.DataFrame.from_dict(d, orient='index')) df = pd.concat(frames, keys=user_ids)
Kedua-dua pendekatan menghasilkan DataFrame dengan yang dikehendaki indeks hierarki dan struktur lajur:
att_1 att_2 12 Category 1 1 whatever Category 2 23 another 15 Category 1 10 foo Category 2 30 bar
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Pandas DataFrame dengan Cekap daripada Kamus Bersarang dengan Data Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!