Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyertai Nilai Berkumpulan dengan Cekap dalam Panda dengan Pembatas?

Bagaimana untuk Menyertai Nilai Berkumpulan dengan Cekap dalam Panda dengan Pembatas?

Barbara Streisand
Barbara Streisandasal
2024-12-16 19:55:18348semak imbas

How to Efficiently Join Grouped Values in Pandas with a Delimiter?

Menyertai Nilai Berkumpulan dengan Pembatas dalam Panda

Apabila menggunakan fungsi kumpulan mengikut untuk mengumpulkan data dengan berbilang nilai, adalah perkara biasa untuk menghadapi isu untuk menggabungkan nilai-nilai ini tanpa pembatas. Untuk menyelesaikan masalah ini, anda boleh memanfaatkan kaedah agg.

Pertimbangkan DataFrame berikut:

col | val
-----|-----
A    | Cat
A    | Tiger
B    | Ball
B    | Bat

Untuk mengumpulkan baris ini berdasarkan lajur kol dan menggabungkan nilai dalam lajur val, gunakan kod berikut:

import pandas as pd
df = pd.DataFrame({'col': ['A', 'A', 'B', 'B'], 'val': ['Cat', 'Tiger', 'Ball', 'Bat']})
grouped = df.groupby('col')['val'].agg('-'.join)

Pendekatan ini harus menghasilkan yang diingini hasil:

col | val
-----|-----
A    | Cat-Tiger
B    | Ball-Bat

Walau bagaimanapun, jika kaedah guna digunakan sebagai alternatif, ia boleh membawa kepada hasil yang tidak dijangka dengan nilai sempang berlaku beberapa kali, seperti yang dilihat di bawah:

df.groupby('col')['val'].apply(lambda x: '-'.join(x))

col | val
-----|-----
A        | C-a-t-T-i-g-e-r
B          | B-a-l-l-B-a-t

Untuk mengelakkan isu ini, gunakan kaedah agg, seperti yang ditunjukkan dalam contoh di atas.

Selain itu, untuk menukar indeks terkumpul atau MultiIndex ke lajur biasa, anda boleh menggunakan kaedah reset_index:

df1 = grouped.reset_index(name='new')

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Nilai Berkumpulan dengan Cekap dalam Panda dengan Pembatas?. 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