2016-06-23 35 views
9

Dato il seguente frame di dati:Pandas Numero righe all'interno Gruppo

import pandas as pd 
import numpy as np 
df=pd.DataFrame({'A':['A','A','A','B','B','B'], 
       'B':['a','a','b','a','a','a'], 
       }) 
df 

    A B 
0 A a 
1 A a 
2 A b 
3 B a 
4 B a 
5 B a 

vorrei creare colonna 'C', che conta le righe all'interno di ciascun gruppo di colonne A e B come questo:

A B C 
0 A a 1 
1 A a 2 
2 A b 1 
3 B a 1 
4 B a 2 
5 B a 3 

ho provato questo finora:

df['C']=df.groupby(['A','B'])['B'].transform('rank') 

... ma niente da fare! Grazie in anticipo!

risposta

16

Uso groupby/cumcount:

In [25]: df['C'] = df.groupby(['A','B']).cumcount()+1; df 
Out[25]: 
    A B C 
0 A a 1 
1 A a 2 
2 A b 1 
3 B a 1 
4 B a 2 
5 B a 3