Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Meletupkan Senarai Bersarang ke dalam Baris Individu dalam Bingkai Data Pandas?

Bagaimana untuk Meletupkan Senarai Bersarang ke dalam Baris Individu dalam Bingkai Data Pandas?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-12 03:10:02544semak imbas

How to Explode Nested Lists into Individual Rows in a Pandas Dataframe?

Meletupkan Senarai Bersarang Menjadi Baris Individu dalam Bingkai Data Pandas

Dalam bidang manipulasi data dengan panda, keperluan sering timbul untuk menyusun semula data disimpan sebagai senarai bersarang ke dalam baris individu. Pertimbangkan bingkai data di mana lajur "nearrest_neighbors" mengandungi senarai nilai. Objektifnya adalah untuk "meletupkan" senarai ini, mencipta baris berasingan untuk setiap nilai dalam senarai.

Panda 0.25 Memudahkan Senarai Meletup dengan Kaedah explode()

Untuk panda versi 0.25 dan lebih baru, mengembangkan senarai dalam lajur dipermudahkan dengan ketara dengan pengenalan kaedah explode(). Untuk menunjukkan kefungsiannya, mari kita cipta semula contoh kerangka data:

import pandas as pd

# Original DataFrame
df = pd.DataFrame({'name': ['A.J. Price'] * 3, 
                    'opponent': ['76ers', 'blazers', 'bobcats'], 
                    'nearest_neighbors': [['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']] * 3})

# Set the index for easier reference
df = df.set_index(['name', 'opponent'])

Meletupkan Senarai Bersarang

Menggunakan kaedah explode(), kita boleh membahagikan "neast_neighbors" lajur dengan elemen senarainya, mencipta baris berasingan untuk setiap nilai:

# Explode the list-like column
df_exploded = df.explode('nearest_neighbors')

Output selepas Meletup

print(df_exploded)
                    nearest_neighbors
name       opponent                  
A.J. Price 76ers          Zach LaVine
           76ers           Jeremy Lin
           76ers        Nate Robinson
           76ers                Isaia
           blazers        Zach LaVine
           blazers         Jeremy Lin
           blazers      Nate Robinson
           blazers              Isaia
           bobcats        Zach LaVine
           bobcats         Jeremy Lin
           bobcats      Nate Robinson
           bobcats              Isaia

Seperti yang anda lihat, setiap nilai daripada senarai dalam lajur "nearrest_neighbors" kini diwakili sebagai baris berasingan dalam indeks lawannya yang sepadan.

Kaedah Lain untuk Peluasan Senarai

Untuk versi panda sebelum 0.25, terdapat pendekatan lain untuk mengembangkan senarai dalam lajur. Kaedah ini memerlukan gabungan operasi seperti aplikasi, lambda dan pemahaman senarai. Walau bagaimanapun, dengan pengenalan kaedah explode(), pendekatan yang lebih kompleks ini tidak lagi diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Meletupkan Senarai Bersarang ke dalam Baris Individu dalam Bingkai Data Pandas?. 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