Есть ли строка кода, которую я могу запустить, чтобы получить уникальные значения из одного столбца на основе groupby?

#python #pandas #group-by #jupyter

#python #pandas #group-by #jupyter

Вопрос:

Я выполнил groupby в df, чтобы сгруппировать столбцы на основе кода его страны. Т.е.:

 DataGroup = df.groupby('COUNTRY_CODE').apply(lambda x: x.sort_values('Name'))
DataGroup
  

и мне удалось сгруппировать все столбцы на основе кода страны, к которой они принадлежат. Теперь я хотел бы получить уникальные имена из столбца Name из каждой группы кодов стран, чтобы, например, в ‘UK’, если столбец содержит имена: [‘John’, ‘Mary’, ‘Fatema’, ‘John’], как мне будут представлены уникальные значения только в столбце df?

Надеюсь, это имеет смысл?

Ответ №1:

да, вы можете достичь этого, используя drop_duplicates и указав подмножество, которое вы проверяете: DataGroup.drop_duplicates(subset=["COUNTRY_CODE", "Name"])

Полный пример:

 import pandas as pd
df = pd.DataFrame([("NO", "John"),
                   ("NO", "Jane"),
                   ("NO", "John"),
                   ("SE", "Ville")], columns=["COUNTRY_CODE","Name"])
DataGroup = df.groupby('COUNTRY_CODE').apply(lambda x: x.sort_values('Name'))
print(DataGroup)
DataGroup = DataGroup.drop_duplicates(subset=["COUNTRY_CODE", "Name"])
print(DataGroup)

Output:
               COUNTRY_CODE   Name
COUNTRY_CODE                      
NO           1           NO   Jane
             0           NO   John
             2           NO   John
SE           3           SE  Ville
               COUNTRY_CODE   Name
COUNTRY_CODE                      
NO           1           NO   Jane
             0           NO   John
SE           3           SE  Ville

  

Комментарии:

1. Идеально! Спасибо за вашу помощь 🙂