Saya memiliki df yang terlihat seperti ini:

              datetime                     policyid                   score
0   1970-01-01 00:00:01.593560812         9876policyID1234567890        0 
1   1970-01-01 00:00:01.593560814         9876policyID1234567890        0 
2   1970-01-01 00:00:01.593560958         9876policyID1234567890        1
3   1970-01-01 00:00:01.593560964         9876policyID1234567890        1

Saya ingin mengelompokkan berdasarkan policyid dan score TAPI hanya menyimpan baris dengan cap terbesar per id dan skor yang sama.

Saya melakukan groupby seperti:

df.groupby(['policyid','score'])

Pada titik ini, saya tidak yakin bagaimana membandingkan stempel waktu antara baris dan menjaga baris dengan stempel waktu yang lebih besar.

DF baru akan terlihat seperti ini:

              datetime                     policyid                   score
1   1970-01-01 00:00:01.593560814         9876policyID1234567890        0 
3   1970-01-01 00:00:01.593560964         9876policyID1234567890        1

Terima kasih sebelumnya.

0
RustyShackleford 1 Juli 2020, 03:10

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan sort_values, lalu drop_duplicates:

df=df.sort_values('datetime').drop_duplicates(['policyid','score'], keep='last') 
1
MrNobody33 1 Juli 2020, 04:53