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

У меня есть набор данных, который содержит несколько уникальных идентификаторов, и я хотел бы получить подсчет значений того, сколько из этих идентификаторов содержат и «оригинал», и «копию» в столбце содержимого.Кроме того, как мне сделать это в нескольких столбцах?

Я знаю, как сделать это в Excel, но довольно плохо знаком с Python, поэтому любая помощь будет очень полезной!

df:

user_id  content_type  status
1234     original      pending
1234     copy          blocked
4321     original      blocked
4321     original      distributed
5678     original      blocked
5678     copy          pending

Вывод:

оригинал + копия = 2

оригинал + в ожидании = 1

оригинал + заблокирован = 2

и т. Д.

1 Ответ

0 голосов
/ 13 ноября 2018

Группы, имеющие 'copy':

sum(df.groupby('user_id').apply(lambda x: 'copy' in x['content_type'].unique()))

(суммирование строк, имеющих 'copy'; True = 1 и False = 0)

Или

df.groupby('user_id').apply(lambda x: x[x['content_type']=='copy']).shape[0]

Подсчет status:

df[df['content_type'] == 'original'].groupby('status').size()

status
blocked        2
distributed    1
pending        1

Или, если вы хотите считать как оригинал, так и копию,

df.groupby(['content_type','status']).size()

content_type  status     
copy          blocked        1
              pending        1
original      blocked        2
              distributed    1
              pending        1
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...