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
Lepaskan: 2024-12-02 03:30:13
asal
164 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan