¿Cómo contar valores distintos en una columna de un grupo de pandas por objeto?

Tengo un dataframe de pandas y lo col2 por dos columnas (por ejemplo, col1 y col2 ). Para valores fijos de col1 y col2 (es decir, para un grupo) puedo tener varios valores diferentes en col3 . Me gustaría contar el número de valores distintos de las terceras columnas.

Por ejemplo, si tengo esto como mi entrada:

 1 1 1 1 1 1 1 1 2 1 2 3 1 2 3 1 2 3 2 1 1 2 1 2 2 1 3 2 2 3 2 2 3 2 2 3 

Me gustaría tener esta tabla (dataframe) como salida:

 1 1 2 1 2 1 2 1 3 2 2 1 

 df.groupby(['col1','col2'])['col3'].nunique().reset_index() 
 In [17]: df Out[17]: 0 1 2 0 1 1 1 1 1 1 1 2 1 1 2 3 1 2 3 4 1 2 3 5 1 2 3 6 2 1 1 7 2 1 2 8 2 1 3 9 2 2 3 10 2 2 3 11 2 2 3 In [19]: df.groupby([0,1])[2].apply(lambda x: len(x.unique())) Out[19]: 0 1 1 1 2 2 1 2 1 3 2 1 dtype: int64