Pandas dataframe - Уникальное количество в зависимости от различных условий - PullRequest
0 голосов
/ 01 августа 2020

У меня есть такой фрейм данных

скриншот

Я хочу узнать:

  • уникальные зрители: 3
  • уникальных зрителей, просмотревших фильмы: 2

Я могу сделать это, используя следующий код:

movie['Viewer_ID'].nunique()

movie.loc[movie['watched']==1,:]['Viewer_ID'].nunique()

Однако мне было интересно, есть ли лучший способ чтобы объединить оба в одном, что-то вроде

movie.agg({'Viewer_id':'nunique'
      ,'watched': 'sum'
    })

Есть ли способ записать условный счет в функции agg?

1 Ответ

0 голосов
/ 01 августа 2020

Вы можете использовать .groupby():

view_count = movie.groupby('Viewer_id').watched.sum()

Теперь view_count - это серия с идентификатором зрителя в качестве индекса и суммой наблюдаемых значений. Вы можете отфильтровать:

filtered = view_count.loc[view.count > 0]
...