Pertimbangkan df seperti ini:

mode id
car 1_2fgg
car 1_2fgg
car 1_2fgg
car 1_2fgg
bike 2_344jd
car 2_344jd

Saya ingin meratakan kolom mode untuk mendapatkan daftar semua mode unik, per id, jadi kira-kira seperti:

id modes
1_2fgg car
2_344jd bike,car

Bagaimana saya bisa melakukan ini di panda? Saya kira groupby id

1
LearningSlowly 28 Mei 2021, 16:19

2 jawaban

Jawaban Terbaik

Coba bergabung dengan unique

df.groupby('id')['mode'].agg(lambda x: ','.join(x.unique())

Atau jatuhkan duplikat sebelum groupby (mungkin lebih cepat):

(df.drop_duplicates(['mode', 'id'])
   .groupby('id')['mode'].agg(','.join)
)
1
Quang Hoang 28 Mei 2021, 13:21

Kita dapat menggunakan GroupBy.uniquedengan Series.str.join di sini.

df.groupby('id')['mode'].unique().str.join(',').reset_index()

        id      mode
0   1_2fgg       car
1  2_344jd  bike,car
3
Ch3steR 28 Mei 2021, 13:25