Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh memisahkan rentetan teks kepada berbilang baris berdasarkan pembatas tertentu menggunakan Panda?

Bagaimanakah saya boleh memisahkan rentetan teks kepada berbilang baris berdasarkan pembatas tertentu menggunakan Panda?

Barbara Streisand
Barbara Streisandasal
2024-11-10 08:40:03413semak imbas

How can I split text strings into multiple rows based on specific delimiters using Pandas?

Kaedah Pandas untuk Memisahkan Teks kepada Berbilang Baris

Masalah:
Fail CSV yang besar mengandungi lajur dengan rentetan teks yang perlu dipecahkan kepada berbilang baris berdasarkan pembatas tertentu. Matlamatnya ialah untuk mencipta baris berasingan bagi setiap set teks pecahan.

Penyelesaian menggunakan Panda:

  1. Pisah teks dengan pembatas pertama (ruang) menggunakan str.split(' ').
  2. Gunakan fungsi apply() untuk memisahkan setiap rentetan dalam senarai dengan pembatas kedua (titik bertindih) dan tukarkannya kepada satu siri.
  3. Gunakan tindanan() untuk menukar DataFrame yang terhasil kepada satu lajur dan menetapkan semula indeks.
  4. Namakan semula lajur kepada 'Sekat tempat duduk'.
  5. Lepaskan lajur 'Seatblocks' asal daripada DataFrame.
  6. Sertai yang baharu Lajur 'sekat tempat duduk' ke DataFrame asal.

Dipisahkan oleh Ruang dan Titik Bertitik:

s = df['Seatblocks'].str.split(' ').apply(Series, 1).stack()
s.index = s.index.droplevel(-1)
s.name = 'Seatblocks'
del df['Seatblocks']
df.join(s)

Contoh Output:

   CustNum     CustomerName  ItemQty Item  ItemExt  Seatblocks
0    32363  McCartney, Paul        3  F04       60  2:218:10:4,6
1    31316     Lennon, John       25  F01      300  1:13:36:1,12
1    31316     Lennon, John       25  F01      300  1:13:37:1,13

Berpisah mengikut Kolon:

df.join(s.apply(lambda x: Series(x.split(':'))))

Contoh Output:

   CustNum     CustomerName  ItemQty Item  ItemExt  0    1   2     3
0    32363  McCartney, Paul        3  F04       60  2  218  10   4,6
1    31316     Lennon, John       25  F01      300  1   13  36  1,12
1    31316     Lennon, John       25  F01      300  1   13  37  1,13

Atas ialah kandungan terperinci Bagaimanakah saya boleh memisahkan rentetan teks kepada berbilang baris berdasarkan pembatas tertentu menggunakan Panda?. 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