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!