Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Fungsi Pandas\' `melt` Membentuk Semula DataFrame dengan Lajur Kumpulan dan Nama Tambahan?

Bagaimanakah Fungsi Pandas\' `melt` Membentuk Semula DataFrame dengan Lajur Kumpulan dan Nama Tambahan?

DDD
DDDasal
2024-11-28 00:04:111085semak imbas

How Can Pandas' `melt` Function Reshape a DataFrame with Additional Group and Name Columns?

Fungsi Pandas Melt: Alat Pembentuk Semula

Masalah

Pertimbangkan DataFrame df dan kamus d. Anda bertujuan untuk membentuk semula df menjadi jadual dengan lajur tambahan, iaitu Kumpulan dan Nama. Output yang diingini sepatutnya menyerupai:

    Group   Name  Year  Value
 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
 5      B    Ben  2014      5
 6      C   Carl  2013      7
 7      C   Carl  2014      4
 8      C  Chris  2013      8
 9      C  Chris  2014      5
10  Other         2013      3
11  Other         2014      6

Penyelesaian

Untuk mencapai bentuk semula ini, kami akan menggunakan fungsi lelehan Pandas.

m = pd.melt(df, id_vars=['Year'], var_name='Name')

Ini akan mencipta DataFrame cair m dengan lajur Tahun, Nama dan nilai. Untuk menambah lajur Kumpulan, kami membentuk semula d seperti berikut:

d2 = {}
for k, v in d.items():
  for item in v:
    d2[item] = k

Kami kemudian memetakan d2 kepada m['Nama'] untuk mengisi lajur Kumpulan.

m['Group'] = m['Name'].map(d2)

Akhir sekali, kami alihkan nilai 'Lain' dari Nama ke Kumpulan:

mask = m['Name'] == 'Other'
m.loc[mask, 'Name'] = ''
m.loc[mask, 'Group'] = 'Other'

DataFrame m yang terhasil akan sepadan dengan yang dikehendaki keluaran.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Pandas\' `melt` Membentuk Semula DataFrame dengan Lajur Kumpulan dan Nama Tambahan?. 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