2016-10-16 15 views
5

Khi tôi thả John như trùng lặp xác định 'tên' như tên cột:Làm thế nào để giảm trùng lặp khỏi DataFrame có tính đến giá trị tài khoản của một cột

import pandas as pd 
data = {'name':['Bill','Steve','John','John','John'], 'age':[21,28,22,30,29]} 
df = pd.DataFrame(data) 
df = df.drop_duplicates('name') 

gấu trúc xuống tất cả các đơn vị phù hợp với rời khỏi trái nhất:

age name 
0 21 Bill 
1 28 Steve 
2 22 John 

Thay vào đó tôi muốn giữ hàng mà tuổi của John là cao nhất (trong ví dụ này nó là 30. Làm thế nào để đạt được điều này tuổi?

+0

thử điều này: 'df.drop_duplicates ('name', giữ = 'cuối cùng')' hoặc 'df.sort_values ​​('tuổi') .drop_duplicates ('name', keep = 'last') ' – MaxU

Trả lời

4

thử này:

In [75]: df 
Out[75]: 
    age name 
0 21 Bill 
1 28 Steve 
2 22 John 
3 30 John 
4 29 John 

In [76]: df.sort_values('age').drop_duplicates('name', keep='last') 
Out[76]: 
    age name 
0 21 Bill 
1 28 Steve 
3 30 John 

hay này tùy thuộc vào mục tiêu của mình:

In [77]: df.drop_duplicates('name', keep='last') 
Out[77]: 
    age name 
0 21 Bill 
1 28 Steve 
4 29 John 
+0

Tuyệt vời! Phân loại sẽ là một giải pháp ở đây với 'giữ 'phẳng thiết lập để cuối cùng. Cảm ơn! – alphanumeric

Các vấn đề liên quan