Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Pandas DataFrame daripada Kamus Bersarang dengan Indeks Hierarki?

Bagaimana untuk Mencipta Pandas DataFrame daripada Kamus Bersarang dengan Indeks Hierarki?

DDD
DDDasal
2024-12-02 03:30:13155semak imbas

How to Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Indexes?

Membina Pandas DataFrame daripada Item dalam Kamus Bersarang dengan Indeks Hierarki

Dalam senario ini, anda ingin mencipta Pandas DataFrame daripada kamus bersarang di mana hierarkinya terdiri daripada :

  • Tahap 1: Pengguna ID
  • Tahap 2: Kategori
  • Tahap 3: Atribut Pelbagai

DataFrame yang dikehendaki harus mempunyai ID Pengguna sebagai indeks dan kategori serta atribut sebagai lajur.

Memanfaatkan Panda MultiIndex

Satu pendekatan cekap menggunakan MultiIndex panda, yang membolehkan penciptaan struktur indeks berbilang peringkat. Untuk menggunakan kaedah ini:

  1. Bentuk semula kamus input untuk menggunakan tupel sebagai kekunci, menjajarkan dengan nilai MultiIndex yang dikehendaki.
  2. Bina DataFrame menggunakan pd.DataFrame.from_dict, dengan menyatakan orient= 'indeks' untuk menyelaraskan data dengan tupel yang ditentukan kekunci.
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')

print(df)



               att_1     att_2
12 Category 1      1  whatever
   Category 2     23   another
15 Category 1     10       foo
   Category 2     30       bar

Kaedah melalui Penggabungjalinan

Sebagai alternatif, anda boleh membina DataFrame secara berperingkat melalui penggabungan:

  1. Ekstrak ID Pengguna dan mencipta senarai kosong untuk menyimpan bingkai data komponen.
  2. Lelaran melalui kamus, mencipta bingkai data untuk setiap pengguna dan menambahkannya pada senarai.
  3. Sambungkan bingkai data komponen menggunakan pd.concat, pengindeksan mengikut ID Pengguna.
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)

print(df)


               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 Bagaimana untuk Mencipta Pandas DataFrame daripada Kamus Bersarang dengan Indeks Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn