Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Kesatuan Rentetan dengan Pandas GroupBy?

Bagaimana untuk Mendapatkan Kesatuan Rentetan dengan Pandas GroupBy?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 09:50:03289semak imbas

How to Obtain a Union of Strings with Pandas GroupBy?

Panda GroupBy: Mendapatkan Kesatuan Rentetan

Dalam konteks Pandas, fungsi groupby menawarkan cara yang mudah untuk mengumpulkan data berdasarkan lajur tertentu dan melakukan pengiraan pada kumpulan yang terhasil. Walau bagaimanapun, apabila berurusan dengan lajur rentetan, fungsi pengagregatan lalai seperti sum() mungkin tidak selalu menghasilkan hasil yang diingini.

Andaikan kita mempunyai DataFrame dengan lajur 'A', 'B' dan 'C', di mana 'C' mengandungi nilai rentetan. Kita boleh menggunakan groupby("A")["C"].sum() untuk mendapatkan rentetan bercantum bagi setiap kumpulan:

<code class="python">print(df.groupby("A")["C"].sum())

# Output:
# A
# 1    Thisstring
# 2           is!
# 3             a
# 4        random
# Name: C, dtype: object</code>

Untuk mendapatkan kesatuan rentetan (iaitu, rentetan unik dalam setiap kumpulan), kita boleh menggunakan fungsi tersuai yang berulang ke atas elemen lajur 'C' dan mencipta rentetan dipisahkan koma yang dikelilingi oleh pendakap.

<code class="python">def get_string_union(group):
    return "{%s}" % ', '.join(group['C'].unique())

df.groupby('A')['C'].apply(get_string_union)

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>

Pendekatan lain melibatkan penggunaan fungsi guna bersama-sama dengan ungkapan lambda:

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>

Apabila digunakan pada DataFrame yang lebih besar, fungsi tersuai boleh digunakan untuk mengembalikan Siri yang mengandungi gabungan rentetan yang dikehendaki untuk setiap kumpulan:

<code class="python">def f(x):
     return Series(dict(A = x['A'].sum(), 
                        B = x['B'].sum(), 
                        C = "{%s}" % ', '.join(x['C'])))

df.groupby('A').apply(f)

# Output:
#   A         B               C
# A                             
# 1  2  1.615586  {This, string}
# 2  4  0.421821         {is, !}
# 3  3  0.463468             {a}
# 4  4  0.643961        {random}</code>

Dengan menggunakan fungsi tersuai atau fungsi guna dengan ungkapan lambda, Pandas membenarkan kami memanipulasi dan mendapatkan hasil khusus daripada data yang mengandungi lajur rentetan. Kaedah yang dinyatakan di atas menyediakan cara yang mudah untuk menggabungkan rentetan unik dalam setiap kumpulan dan mengembalikannya dalam format yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kesatuan Rentetan dengan Pandas GroupBy?. 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