Memisahkan Teks dalam Lajur kepada Berbilang Baris dengan Panda
Apabila bekerja dengan data jadual yang mengandungi rentetan yang perlu dipecahkan kepada berbilang baris, memanfaatkan panda dan Python boleh membantu dalam tugas ini. Pertimbangkan senario di mana fail CSV mengandungi lajur dengan teks yang memerlukan pemisahan mengikut pembatas tertentu.
Pernyataan Masalah
Andaikan anda mempunyai fail CSV dengan lajur bernama " Sekat tempat duduk" yang mengandungi rentetan yang mewakili berbilang set tempat duduk, setiap satu dipisahkan oleh ruang diikuti dengan titik bertindih. Matlamat anda adalah untuk membahagikan set tempat duduk ini kepada baris yang berasingan. Sebagai contoh, lajur Sekat Tempat duduk berikut:
2:218:10:4,6 1:13:36:1,12 1:13:37:1,13
hendaklah menghasilkan tiga baris berasingan:
2:218:10:4,6 1:13:36:1,12 1:13:37:1,13
Penyelesaian Menggunakan Panda
Untuk cekap belah lajur Sekat Tempat duduk dan buat berbilang baris, anda boleh menggunakan perkara berikut langkah:
Pisah Mengikut Ruang: Gunakan kaedah str.split() untuk membahagikan teks mengikut ruang dalam setiap sel lajur "Sekat tempat duduk":
s = df['Seatblocks'].str.split(' ')
Gunakan Fungsi Siri: Untuk menukar senarai rentetan yang dipisahkan ruang yang terhasil ke dalam kerangka data, gunakan fungsi Siri pada setiap senarai:
s = s.apply(Series, 1)
Flatten DataFrame: Susun kerangka data baharu untuk diratakan ia menjadi satu lajur bingkai data:
s = s.stack()
Tetapkan Semula Indeks dan Namakan Semula Lajur: Tetapkan semula indeks agar sejajar dengan indeks kerangka data asal dan namakan semula lajur kepada 'Sekat tempat duduk':
s.index = s.index.droplevel(-1) s.name = 'Seatblocks'
Padamkan Yang Asal Lajur: Alih keluar lajur "Sekat tempat duduk" asal daripada bingkai data:
del df['Seatblocks']
Sertai Split DataFrame: Akhir sekali, sertai bingkai data pisah dengan yang asal kerangka data:
df = df.join(s)
Alternatif untuk Pemisahan mengikut Kolon
Jika lajur Sekat Tempat duduk perlu dipecahkan dengan titik bertindih, anda boleh mengubah suai penyelesaian seperti berikut:
s = df['Seatblocks'].str.split(' ') s = s.apply(lambda x: Series(x.split(':')))
Ini akan mencipta kerangka data dengan setiap rentetan yang dipisahkan bertindih dalam rentetannya sendiri lajur.
Atas ialah kandungan terperinci Bagaimanakah anda boleh memisahkan teks dalam lajur Pandas kepada berbilang baris menggunakan pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!