Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Memisahkan Lajur Rentetan DataFrame Pandas kepada Dua Lajur?

Bagaimana untuk Memisahkan Lajur Rentetan DataFrame Pandas kepada Dua Lajur?

Mary-Kate Olsen
Lepaskan: 2024-12-24 04:41:18
asal
523 orang telah melayarinya

How to Split a Pandas DataFrame String Column into Two Columns?

Bagaimanakah untuk memisahkan lajur rentetan bingkai data kepada dua lajur?

Apabila bekerja dengan data jadual, selalunya perlu memanipulasi data untuk mengekstrak cebisan maklumat tertentu. Satu tugas biasa ialah membahagikan satu lajur nilai rentetan kepada berbilang lajur, setiap satu mengandungi sebahagian daripada rentetan asal.

Masalah dan Keperluan

Andaikan kita mempunyai DataFrame dinamakan df dengan satu lajur dipanggil baris yang mengandungi nilai rentetan dalam format berikut:

          row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL
Salin selepas log masuk

Matlamat kami adalah untuk bahagikan lajur baris kepada dua lajur baharu: fips dan baris, dengan fips mengandungi lima aksara pertama setiap rentetan dan baris mengandungi aksara yang tinggal.

Penyelesaian menggunakan str.split()

Salah satu cara untuk memisahkan lajur baris ialah menggunakan kaedah str.split(). Kaedah ini mengambil ungkapan biasa sebagai hujah, dan ia memisahkan rentetan berdasarkan corak yang ditentukan oleh ungkapan biasa. Dalam kes kami, kami boleh menggunakan ungkapan biasa berikut:

r'(\d{5}) +'
Salin selepas log masuk

Ungkapan biasa ini akan sepadan dengan jujukan lima digit diikuti dengan satu atau lebih ruang. Kami kemudiannya boleh menggunakan kaedah str.split() untuk memisahkan lajur baris menggunakan ungkapan biasa ini dan menetapkan senarai yang terhasil kepada lajur fips dan baris seperti berikut:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.split(r'(\d{5}) +', n=1, expand=True)
Salin selepas log masuk

Parameter expand=True ialah digunakan untuk menentukan bahawa kaedah str.split() harus mengembalikan DataFrame dengan berbilang lajur, bukannya Siri senarai.

Hasil

Selepas melaksanakan kod di atas, df DataFrame kami akan kelihatan seperti ini:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL
Salin selepas log masuk
Salin selepas log masuk

Penyelesaian Alternatif menggunakan str.extract()

Cara lain untuk memisahkan lajur baris adalah menggunakan kaedah str.extract(). Kaedah ini mengambil ungkapan biasa sebagai hujah dan ia mengembalikan DataFrame yang mengandungi padanan untuk ungkapan biasa. Dalam kes kami, kami boleh menggunakan ungkapan biasa berikut:

r'(\d{5}) +\D+'
Salin selepas log masuk

Ungkapan biasa ini akan sepadan dengan jujukan lima digit diikuti dengan satu atau lebih bukan digit. Kami kemudiannya boleh menggunakan kaedah str.extract() untuk mengekstrak padanan bagi ungkapan biasa ini dan menetapkan DataFrame yang terhasil kepada lajur fips dan baris seperti berikut:

import pandas as pd

# Split the 'row' column into 'fips' and 'row' columns
df[['fips', 'row']] = df['row'].str.extract(r'(\d{5}) +\D+')
Salin selepas log masuk

Hasil

Selepas melaksanakan kod di atas, df DataFrame kami akan kelihatan seperti ini:

         fips       row
0    00000 UNITED STATES
1    01000 ALABAMA
2    01001 Autauga County, AL
3    01003 Baldwin County, AL
4    01005 Barbour County, AL
Salin selepas log masuk
Salin selepas log masuk

Kedua-dua penyelesaian di atas akan mencapai hasil yang diingini, memisahkan lajur baris kepada lajur fips dan baris. Penyelesaian str.split() adalah lebih fleksibel dan boleh digunakan untuk memisahkan lajur berdasarkan sebarang ungkapan biasa, manakala penyelesaian str.extract() lebih mudah dan lebih mudah difahami.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur Rentetan DataFrame Pandas kepada Dua Lajur?. 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