Membina Bingkai Data Panda daripada Kamus Bersarang
Apabila bekerja dengan kamus bersarang, mungkin sukar untuk menukar data menjadi DataFrame panda dalam cara yang selaras dengan struktur yang dikehendaki. Khususnya, mengekstrak data daripada tahap terdalam kamus sebagai siri boleh menyusahkan.
Andaikan anda mempunyai kamus berstruktur seperti berikut:
Matlamatnya adalah untuk membina DataFrame dengan indeks hierarki menggunakan data dari peringkat ketiga kamus.
Menggunakan MultiIndex
Panda MultiIndex ialah cara mudah untuk mewakili data hierarki dalam DataFrame. Untuk mencipta MultiIndex daripada kamus bersarang, bentuk semula kekunci menjadi tupel yang sepadan dengan nilai berbilang indeks.
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')
Pendekatan ini akan mencipta DataFrame dengan indeks hierarki, di mana tahap pertama mengandungi UserIds dan tahap kedua mengandungi Kategori. Data dari peringkat ketiga kini disusun mengikut siri yang boleh diakses menggunakan kedua-dua UserId dan Kategori sebagai indeks.
Pendekatan Alternatif menggunakan Concatenation
Cara lain untuk membina DataFrame ialah dengan menggabungkan bingkai data komponen.
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)
Kaedah ini berulang ke atas kamus, mencipta DataFrame untuk setiap user_id dan gabungan kategori. Bingkai data yang terhasil kemudiannya disatukan secara menegak dan dicantumkan menggunakan kekunci sebagai indeks hierarki.
Atas ialah kandungan terperinci Bagaimana untuk Membina DataFrame Pandas dengan Cekap daripada Kamus Bersarang dengan Indeks Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!