Создайте дополнительные столбцы, которые учитывают совокупные вхождения, сгруппированные по другому столбцу

#pandas

Вопрос:

У меня есть df, который выглядит так с дубликатом удостоверения личности

      ID    Usage_type
0     5    Note
1     6    Note
2     7    Service
3     5    Note
4     7    Note
5     10   Service
 

Мне нужны дополнительные два столбца, которые указывают совокупное количество usage_type для каждого идентификатора, например:

      ID    Usage_type   type_Note    type_Service
0     5    Note         1            0
1     6    Note         1            0
2     7    Service      0            1
3     5    Note         2            0
4     7    Note         1            1
5     10   Service      0            1
 

У меня есть код, который подсчитывает общее количество значений для столбца Usage_type для каждого идентификатора, но хочет разделить два типа

Ответ №1:

Давайте попробуем get_dummies и groupby с cumsum

 df = df.join(df.Usage_type.str.get_dummies().groupby(df.ID).cumsum())
df
Out[80]: 
   ID Usage_type  Note  Service
0   5       Note     1        0
1   6       Note     1        0
2   7    Service     0        1
3   5       Note     2        0
4   7       Note     1        1
5  10    Service     0        1
 

Комментарии:

1. Я попробовал ваше решение, но получил синтаксическую ошибку. Хотя я не уверен, где это находится