Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh membahagikan sel yang dipisahkan koma kepada berbilang baris dalam Pandas DataFrame?

Bagaimanakah saya boleh membahagikan sel yang dipisahkan koma kepada berbilang baris dalam Pandas DataFrame?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 05:05:03566semak imbas

How can I split a comma-separated cell into multiple rows in a Pandas DataFrame?

Memisahkan Sel kepada Berbilang Baris dalam Bingkai Data Pandas

Panda menawarkan alat yang komprehensif untuk manipulasi data, termasuk keupayaan untuk memisahkan sel yang mengandungi berbilang nilai dipisahkan koma ke dalam beberapa baris. Dalam panduan ini, kami akan meneroka kaedah untuk mencapai ini menggunakan dua pendekatan berbeza berdasarkan versi panda.

pandas >= 0.25

Untuk panda versi 0.25 dan ke atas, anda boleh menggunakan gabungan daripada apply, str.split, dan Series.explode untuk mencapai hasil yang diingini. Berikut ialah coretan kod:

<code class="python">(df.set_index(['order_id', 'order_date'])
   .apply(lambda x: x.str.split(',').explode())
   .reset_index())                                                   </code>

Penjelasan:

  1. set_index(['order_id', 'order_date']): Menetapkan lajur order_id dan order_date sebagai indeks untuk mengekalkannya semasa operasi seterusnya.
  2. apply(lambda x: x.str.split(',').explode()): Menggunakan fungsi lambda pada setiap baris. Ia membahagikan nilai sel (pakej dan kod_pakej) pada pembatas koma dan meletupkan senarai yang terhasil kepada berbilang baris.
  3. reset_index(): Menetapkan semula indeks untuk mencipta DataFrame baharu dengan nilai yang meletup sebagai baris yang berasingan.

pandas <= 0.24

Untuk panda versi 0.24 dan ke bawah, pendekatan yang lebih kompleks melibatkan tindanan, nyahtindan dan str.split diperlukan:

<code class="python">(df.set_index(['order_date', 'order_id'])
   .stack()
   .str.split(',', expand=True)
   .stack()
   .unstack(-2)
   .reset_index(-1, drop=True)
   .reset_index()
)</code>

Penjelasan:

  1. Sama seperti pendekatan sebelumnya, set_index menetapkan order_date dan order_id sebagai indeks.
  2. stack() meruntuhkan baris dan menyusunnya sebagai lajur tunggal.
  3. str.split(',', expand=True) membahagikan nilai gabungan kepada berbilang lajur berdasarkan pembatas koma.
  4. tindanan() menyusun lajur untuk mencipta satu lajur sekali lagi.
  5. nyahtindan(-2) menyahtindan DataFrame pada tahap kedua terakhir untuk mencipta baris yang mengandungi nilai pecahan.
  6. reset_index(-1, drop=True) mengalih keluar tahap tambahan daripada indeks.
  7. reset_index() menambah indeks baharu untuk mencipta DataFrame baharu.

Kedua-dua kaedah akan mengembalikan DataFrame baharu dengan nilai yang meletup sebagai baris berasingan, seperti yang digambarkan dalam output yang anda berikan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh membahagikan sel yang dipisahkan koma kepada berbilang baris dalam Pandas DataFrame?. 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