#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. Идеально! Спасибо за вашу помощь 🙂