2013-11-19 3 views
1

Есть ли способ использовать drop_duplicates вместе с условиями? Например, давайте рассмотрим следующий Dataframe:Pandas: drop_duplicates с условием

import pandas as pd 
df = pd.DataFrame({ 
'Customer_Name': ['Carl', 'Carl', 'Mark', 'Joe', 'Joe'], 
'Customer_Id': [1000,None,None,None,50000] 
}) 

Исходя из этого Dataframe я хотел бы вывести Dataframe с различными строками для Customer_Id и Customer_Name

Customer_Id Customer_Name 
0 1000  Carl 
2 NaN   Mark 
5 50000  Joe 

К сожалению, я не могу использовать метод drop_duplicates для это, поскольку этот метод всегда удаляет первые или последние дублированные вхождения.

Однако в моем случае это отличается (см. Карл и Джо). Более того, я не могу просто удалить все строки с нитями в столбце Customer_Id, так как это также удалит запись для Mark.

Я глубоко признателен за любую помощь.

+0

может быть, вы можете использовать что-то вроде 'df.groupby ('CUSTOMER_NAME'). Первый()'? –

+0

Что произойдет, если у вас есть 2 не нулевые строки для одного клиента? –

+0

Привет, Роман, тогда вы можете взять первый. Вы можете предположить, что имена одинаковы – Andy

ответ

0

это один работает на вашем примере:

>>> df.groupby('Customer_Name').first().reset_index() 
    Customer_Name Customer_Id 
0   Carl   1000 
1   Joe  50000 
2   Mark   NaN 

Но я должен проверить, как first() лечащие отсутствующие значения, чтобы быть уверенным, что это постоянно работает.

0

Это даст вам только с самым большим номером Customer_Id или NaN если недоступен

df.groupby('Customer_Name').Customer_Id.max().reset_index() 

    Customer_Name Customer_Id 
0   Carl   1000 
1   Joe  50000 
2   Mark   NaN 
Смежные вопросы