Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencipta Pandas DataFrame dengan Cekap daripada Kamus Bersarang dengan Data Hierarki?

Bagaimanakah Saya Boleh Mencipta Pandas DataFrame dengan Cekap daripada Kamus Bersarang dengan Data Hierarki?

Linda Hamilton
Lepaskan: 2024-12-14 10:58:12
asal
541 orang telah melayarinya

How Can I Efficiently Create a Pandas DataFrame from a Nested Dictionary with Hierarchical Data?

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

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan