Gabungkan Rentetan daripada Berbilang Baris menggunakan Pandas Groupby
Apabila bekerja dengan bingkai data, mungkin terdapat situasi di mana anda perlu menyatukan rentetan daripada berbilang baris sambil mengelompokkannya mengikut kriteria tertentu. Pandas menawarkan penyelesaian yang mudah untuk ini melalui fungsi groupby dan transformnya.
Pernyataan Masalah
Diberikan bingkai data dengan lajur 'nama,' 'teks' dan 'bulan ,' matlamatnya adalah untuk menggabungkan rentetan dalam lajur 'teks' untuk setiap gabungan unik 'nama' dan 'bulan.' Output yang dikehendaki ialah bingkai data dengan gabungan 'nama' dan 'bulan' yang unik serta nilai 'teks' yang digabungkan.
Penyelesaian
Untuk mencapai matlamat ini, anda boleh menggunakan langkah berikut:
Berikut ialah contoh kod:
import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data, header=0, names=["name", "text", "date"], parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x)) df[['name','text','month']].drop_duplicates()
Kod di atas menghasilkan bingkai data dengan hasil yang diingini:
name text month 0 name1 hej,du 11 2 name1 aj,oj 12 4 name2 fin,katt 11 6 name2 mycket,lite 12
Penyelesaian Alternatif
Daripada menggunakan transform( ), anda juga boleh menggunakan apply() dan kemudian reset_index() untuk mencapai hasil yang sama. Kod yang dikemas kini ialah:
df.groupby(['name','month'])['text'].apply(','.join).reset_index()
Versi ringkas ini menghapuskan ungkapan lambda dan menyediakan penyelesaian yang lebih ringkas.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Rentetan daripada Berbilang Baris dalam Panda Menggunakan Groupby?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!