O valor de groupby conta com os pandas do dataframe

Eu tenho o seguinte quadro de dados:

df = pd.DataFrame([
    (1, 1, 'term1'),
    (1, 2, 'term2'),
    (1, 1, 'term1'),
    (1, 1, 'term2'),
    (2, 2, 'term3'),
    (2, 3, 'term1'),
    (2, 2, 'term1')
], columns=['id', 'group', 'term'])

Quero agrupar porid egroup e calcule o número de cada termo para esse ID, par de grupos.

Então, no final, eu vou conseguir algo assim:

Consegui alcançar o que queria fazendo um loop por todas as linhas comdf.iterrows() e criar um novo quadro de dados, mas isso é claramente ineficiente. (Se ajudar, conheço a lista de todos os termos de antemão e existem ~ 10 deles).

Parece que eu tenho que agrupar e contar valores, então tentei isso comdf.groupby(['id', 'group']).value_counts() o que não funciona porquevalue_counts opera na série groupby e não em um dataframe.

Enfim, eu posso conseguir isso sem loop?

questionAnswers(2)

yourAnswerToTheQuestion