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
Linda Hamiltonasal
2024-12-14 10:58:12538semak imbas

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')

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!

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