Заменить строковые значения в пандах на их количество - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь вычислить количество некоторых значений во фрейме данных, например

user_id  event_type
    1         a   
    1         a  
    1         b
    2         a
    2         b
    2         c

, и хочу получить таблицу, подобную

user_id  event_type  event_type_count  
    1         a           2              
    1         a           2              
    1         b           1              
    2         a           1              
    2         b           1              
    2         c           2
    2         c           2

Другими словами, я хочу вставитьколичество значения вместо значения в кадре данных.Я пытался использовать df.join(pd.crosstab)..., но получаю большой фрейм данных со многими столбцами.

Каким способом лучше решить эту проблему?

1 Ответ

0 голосов
/ 29 января 2019

Используйте GroupBy.transform в обоих столбцах с GroupBy.size:

df['event_type_count'] = df.groupby(['user_id','event_type'])['event_type'].transform('size')
print (df)
   user_id event_type  event_type_count
0        1          a                 2
1        1          a                 2
2        1          b                 1
3        2          a                 1
4        2          b                 1
5        2          c                 2
6        2          c                 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...