Pandas Python: tabela dinâmica com aggfunc = count unique distinct

df2 = pd.DataFrame({'X' : ['X1', 'X1', 'X1', 'X1'], 'Y' : ['Y2','Y1','Y1','Y1'], 'Z' : ['Z3','Z1','Z1','Z2']})

    X   Y   Z
0  X1  Y2  Z3
1  X1  Y1  Z1
2  X1  Y1  Z1
3  X1  Y1  Z2

g=df2.groupby('X')

pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')

Traceback (última chamada mais recente): ... AttributeError: Objeto 'Index' não tem atributo 'index'

Como obtenho uma tabela dinâmica comcontagens de valores únicos de uma coluna DataFrame para duas outras colunas?
Existeaggfunc para contagem única? Eu deveria estar usandonp.bincount()?

NB Estou ciente de 'Series'values_counts() no entanto, preciso de uma tabela dinâmica.

EDIT: A saída deve ser:

Z   Z1  Z2  Z3
Y             
Y1   1   1 NaN
Y2 NaN NaN   1

questionAnswers(5)

yourAnswerToTheQuestion