Pandas GroupBy with Delimiter Joiner
Apabila mengumpulkan data dalam Pandas dengan berbilang nilai, seseorang mungkin menghadapi keperluan untuk menggabungkan nilai dalam kumpulan menggunakan pembatas tertentu. Walau bagaimanapun, operasi kumpulan mengikut dan jumlah yang mudah boleh mengakibatkan keluaran yang tidak diingini tanpa pembatas yang diingini.
Pertimbangkan kod berikut:
import pandas as pd df = pd.read_csv("Inputfile.txt", sep='\t') group = df.groupby(['col'])['val'].sum() # Output: # A CatTiger # B BallBat
Ini menghasilkan rentetan tunggal dengan nilai yang digabungkan, tanpa pembatas sempang yang dikehendaki.
Untuk mencapai output yang diingini, anda boleh menggunakan fungsi guna dalam kombinasi dengan sertai:
group = df.groupby(['col'])['val'].sum().apply(lambda x: '-'.join(x))
Walau bagaimanapun, penyelesaian ini mungkin masih tidak menghasilkan output yang diharapkan kerana aksara yang tidak diingini disertakan dalam setiap nilai.
Penyelesaian Alternatif
Sebaliknya, pertimbangkan untuk menggunakan fungsi agg dengan parameter gabungan:
df.groupby('col')['val'].agg('-'.join)
Ini akan betul menggabungkan nilai dalam kumpulan menggunakan pembatas sempang, memberikan output yang diingini:
col A Cat-Tiger B Ball-Bat Name: val, dtype: object
Mengemas kini Penyelesaian
Untuk mengendalikan lajur MultiIndex atau Indeks, anda boleh menetapkan semula indeks dan namakan semula menggunakan fungsi reset_index:
df1 = df.groupby('col')['val'].agg('-'.join).reset_index(name='new')
Ini akan menukar indeks kepada yang baharu lajur bernama 'baharu', menyediakan cara yang mudah untuk bekerja dengan data terkumpul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Nilai dengan Cekap dalam Kumpulan Pandas Mengikut Kumpulan Menggunakan Pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!