Fungsi Lebur Panda: Membentuk Semula Bingkai Data untuk Analisis
Soalan:
Pertimbangkan kerangka data dengan berbilang lajur dan a kamus:
df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014] ], lajur=['Amy', 'Bob', 'Carl', 'Chris', 'Ben', 'Lain-lain', 'Tahun'])<br></pra></p> <p><pra>d = {'A': ['Amy'], 'B': ['Bob', ' Ben'], 'C': ['Carl', 'Chris']}<br>
Bagaimanakah kita membentuk semula kerangka data agar menyerupai struktur berikut, di mana lajur dilebur dan dikumpulkan?
0 A Amy 2013 2
1 A Amy 2014 9
2 B Bob 2013 4
3 B Bob 2014 2
4 B Ben 2013 1
2014 5
6 C Carl 2013 7
7 C Carl 2014 4
8 C Chris 2013 8
9 C Chris 2014 5
10 Lain-lain 2013 3
11 Lain-lain 2014 6
Jawapan:
Untuk membentuk semula kerangka data menggunakan fungsi cair, ikut langkah berikut:
Cairkan bingkai data: Cairkan bingkai data ke dalam format yang luas menggunakan fungsi cair. Ini akan menukar lajur kepada baris, dengan parameter id_vars digunakan untuk menentukan lajur yang harus kekal utuh.
m = pd.melt(df, id_vars=['Year'], var_name='Name')
Buat kamus pemetaan: Bentuk semula kamus d untuk membuat pemetaan antara nama lajur dan kumpulan nama.
d2 = {} for k, v in d.items(): for item in v: d2[item] = k
Tambah 'Kumpulan': Petakan kamus yang baru dibuat d2 ke lajur 'Nama' untuk menambah lajur 'Kumpulan'.
m['Group'] = m['Name'].map(d2)
Alih 'Lain': Alihkan nilai 'Lain' dari lajur 'Nama' ke lajur 'Kumpulan'.
mask = m['Name'] == 'Other' m.loc[mask, 'Name'] = '' m.loc[mask, 'Group'] = 'Other'
Bingkai data yang terhasil akan mengandungi struktur rata yang diingini:
print(m) Year Name value Group 0 2013 Amy 2 A 1 2014 Amy 9 A 2 2013 Bob 4 B 3 2014 Bob 2 B 4 2013 Carl 7 C ... ... ... ... ... 7 2014 Chris 5 C 8 2013 Ben 1 B 9 2014 Ben 5 B 10 2013 3 Other 11 2014 6 Other
Atas ialah kandungan terperinci Bagaimana untuk Membentuk Semula Bingkai Data Pandas Menggunakan Fungsi Lebur dan Kamus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!