2016-06-23 17 views
9

otrzymuje następujące ramki danych:Pandy Liczba rzędów znajdujących grupy

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 

ja jak tworzyć w kolumnie „C”, której liczba rzędów w każdej grupie w kolumnach A i B, jak to:

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 

próbowałem to do tej pory:

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

... ale nie ma kości! Z góry dziękuję!

Odpowiedz

16

Zastosowanie 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 
Powiązane problemy