pandas Spalte zum Gruppenrahmen hinzufügen

Ich habe diesen einfachen Datenrahmendf:

df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})

Mein Ziel ist es, die Werte von @ zu zähltype für jedesc, und fügen Sie dann eine Spalte mit der Größe von @ hinc. Also beginnend mit:

In [27]: g = df.groupby('c')['type'].value_counts().reset_index(name='t')

In [28]: g
Out[28]: 
   c type  t
0  1    m  1
1  1    n  1
2  1    o  1
3  2    m  2
4  2    n  2

das erste Problem ist gelöst. Dann kann ich auch:

In [29]: a = df.groupby('c').size().reset_index(name='size')

In [30]: a
Out[30]: 
   c  size
0  1     3
1  2     4

Wie kann ich das @ hinzufügsize -Spalte direkt zum ersten Datenrahmen? Bisher habe ich @ verwendmap wie

In [31]: a.index = a['c']

In [32]: g['size'] = g['c'].map(a['size'])

In [33]: g
Out[33]: 
   c type  t  size
0  1    m  1     3
1  1    n  1     3
2  1    o  1     3
3  2    m  2     4
4  2    n  2     4

was funktioniert, aber gibt es einen einfacheren Weg, dies zu tun?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage