Tabela dinâmica do Pandas para várias colunas ao mesmo tempo

Digamos que eu tenho um DataFrame:

   nj  ptype  wd  wpt
0   2      1   2    1
1   3      2   1    2
2   1      1   3    1
3   2      2   3    3
4   3      1   2    2

Eu gostaria de agregar esses dados usandoptype como o índice assim:

             nj             wd            wpt
       1.0  2.0  3.0  1.0  2.0  3.0  1.0  2.0  3.0
ptype    
    1    1    1    1    0    2    1    2    1    0
    2    0    1    1    1    0    1    0    1    1

Você pode criar cada uma das colunas de nível superior para o valor final criando uma tabela dinâmica comaggfunc='count' e concatenando todos eles, assim:

nj = df.pivot_table(index='ptype', columns='nj', aggfunc='count').ix[:, 'wd']
wpt = df.pivot_table(index='ptype', columns='wpt', aggfunc='count').ix[:, 'wd']
wd = df.pivot_table(index='ptype', columns='wd', aggfunc='count').ix[:, 'nj']
out = pd.concat([nj, wd, wpt], axis=1, keys=['nj', 'wd', 'wpt']).fillna(0)
out.columns.names = [None, None]
print(out)
        nj             wd            wpt
         1    2    3    1    2    3    1    2    3
ptype
1      1.0  1.0  1.0  0.0  2.0  1.0  2.0  1.0  0.0
2      0.0  1.0  1.0  1.0  0.0  1.0  0.0  1.0  1.0

Mas eu realmente não gosto disso e parece errado. Gostaria de saber se existe uma maneira de fazer isso de uma maneira mais simples, de preferência com um método interno. Desde já, obrigado!

questionAnswers(2)

yourAnswerToTheQuestion