Bagaimanakah anda boleh memisahkan teks dalam lajur Pandas kepada berbilang baris menggunakan pembatas?

Mary-Kate Olsen
Lepaskan: 2024-11-16 10:39:03
asal
704 orang telah melayarinya

How can you split text in a Pandas column into multiple rows using delimiters?

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
Salin selepas log masuk

hendaklah menghasilkan tiga baris berasingan:

2:218:10:4,6
1:13:36:1,12
1:13:37:1,13
Salin selepas log masuk

Penyelesaian Menggunakan Panda

Untuk cekap belah lajur Sekat Tempat duduk dan buat berbilang baris, anda boleh menggunakan perkara berikut langkah:

  1. Pisah Mengikut Ruang: Gunakan kaedah str.split() untuk membahagikan teks mengikut ruang dalam setiap sel lajur "Sekat tempat duduk":

    s = df['Seatblocks'].str.split(' ')
    Salin selepas log masuk
  2. 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)
    Salin selepas log masuk
  3. Flatten DataFrame: Susun kerangka data baharu untuk diratakan ia menjadi satu lajur bingkai data:

    s = s.stack()
    Salin selepas log masuk
  4. 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'
    Salin selepas log masuk
  5. Padamkan Yang Asal Lajur: Alih keluar lajur "Sekat tempat duduk" asal daripada bingkai data:

    del df['Seatblocks']
    Salin selepas log masuk
  6. Sertai Split DataFrame: Akhir sekali, sertai bingkai data pisah dengan yang asal kerangka data:

    df = df.join(s)
    Salin selepas log masuk

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(':')))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan