Панды - фильтр пользователей с минимальным количеством слушателей - PullRequest
0 голосов
/ 19 мая 2018

Я хочу отфильтровать мой набор данных для пользователей, которые прослушали минимальное количество уникальных исполнителей.Моя цель - сфокусировать внимание на пользователях с относительно высокой аудиторией в зависимости от выбора исполнителя.

Ниже приведен пример данных и мой исходный код:

full_df.head()

   user artist              plays  gender  age    Country
0   a   devendra banhart    456    m       28.0   United States
1   b   boards of canada    407    m       28.0   United States
2   a   cocorosie           386    m       28.0   United States
3   c   aphex twin          213    m       28.0   United States
4   d   animal collective   203    m       28.0   United States

Код:

eda_df = full_df.groupby('users')['artist'].filter(lambda x: len(x) >= 20)

В этом случае пользователь a будет отображать наибольшее количество исполнителей.

1 Ответ

0 голосов
/ 19 мая 2018

Вы можете использовать groupby.nunique с pd.DataFrame.transform.

В этом примере, используя ваши данные, фильтры для минимального количества уникальных исполнителей по пользователю 1:

res = df[df.groupby('user')['artist'].transform('nunique') > 1]

print(res)

  user           artist  plays gender   age       Country
0    a  devendrabanhart    456      m  28.0  UnitedStates
2    a        cocorosie    386      m  28.0  UnitedStates
...