Как отфильтровать категории при условии наличия не менее 2-х элементов у этих категорий?
Имеется фрейм данных:
data = {'фрукт': ['арбуз','арбуз','арбуз','арбуз','груша', 'груша', 'груша', 'груша', 'вишня', 'абрикос', 'абрикос', 'абрикос', 'банан'],
'страна': ['россия','сша', np.nan, 'россия', np.nan, np.nan,'канада', 'франция', 'португалия', 'испания', np.nan, np.nan, 'перу'],
'вид_фр': ['1','2','3','10', '5', '7', '5', '6', '10', '5', '5', '7', '7']
}
dates = pd.DataFrame(data, columns = ['фрукт','страна', 'вид_фр'])
Нужно оставить только те фрукты, у которых указаны минимум две страны, NaN страной не считается.
Как можно это сделать?
Ожидаемый результат:
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
res = df.groupby("фрукт").filter(lambda x: len(x.dropna(subset=["страна"])) > 1)
результат:
In [56]: res
Out[56]:
фрукт страна вид_фр
0 арбуз россия 1
1 арбуз сша 2
2 арбуз NaN 3
3 арбуз россия 10
4 груша NaN 5
5 груша NaN 7
6 груша канада 5
7 груша франция 6

