Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyahsarang Lajur DataFrame Pandas (atau Berbilang Lajur) ke dalam Berbilang Baris?
Cara Menyahsarang Lajur dalam Bingkai Data Pandas menjadi Berbilang Baris
Salah satu cabaran dalam manipulasi data dengan Panda ialah menangani lajur yang mengandungi senarai. Apabila lajur jenis senarai ini perlu dibahagikan kepada baris yang berasingan, proses itu dikenali sebagai "tidak bersarang" atau "meletup."
Kaedah Pandas Unnesting
Kaedah 1: panda.DataFrame.meletup
Untuk DataFrame dengan satu lajur tidak bersarang, fungsi panda.DataFrame.explode boleh digunakan. Ia mengambil nama lajur sebagai hujah.
df.explode('B') # dataframe with column 'B' containing lists
Kaedah 2: Menggunakan Pembina Ulang dan DataFrame
Kaedah ini menggabungkan ulangan dan pembina DataFrame. Ia mengulangi nilai dalam lajur berdasarkan panjang senarai dan kemudian menggabungkannya.
df = pd.DataFrame({'A': df.A.repeat(df.B.str.len()), 'B': np.concatenate(df.B.values)})
Kaedah 3: Buat Semula Senarai
Mencipta semula senarai melibatkan penukaran lajur lama kepada senarai tupel yang mengandungi nilai lajur dan setiap elemen list.
pd.DataFrame([[x] + [z] for x, y in df.values for z in y], columns=df.columns)
Kaedah 4: Menggunakan Reindex
Reindex mencipta DataFrame baharu dengan indeks berulang untuk elemen dalam senarai. Lajur itu kemudiannya diberikan elemen bercantum.
df.reindex(df.index.repeat(df.B.str.len())).assign(B=np.concatenate(df.B.values))
Mengerti kepada Berbilang Lajur
Untuk menyahsarang berbilang lajur, fungsi tersuai boleh ditakrifkan. Ia memerlukan DataFrame dan senarai nama lajur untuk meletup.
def unnesting(df, explode): idx = df.index.repeat(df[explode[0]].str.len()) df1 = pd.concat([ pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1) df1.index = idx return df1.join(df.drop(explode, 1), how='left')
Mendatar Tidak Bersarang
Untuk membuka sarang secara mendatar, kaedah add_prefix boleh digunakan untuk mencipta siri lajur baharu.
df.join(pd.DataFrame(df.B.tolist(), index=df.index).add_prefix('B_'))
Atas ialah kandungan terperinci Bagaimana untuk Menyahsarang Lajur DataFrame Pandas (atau Berbilang Lajur) ke dalam Berbilang Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!