我有一个这样的Pandas数据框:

                Q1            Q2           Q3               Q4
0               Bachelor    Postgrad    Postgrad        Masters
1               Bachelor    Postgrad    Postgrad        Bachelor
2               Masters     Postgrad    Postgrad        Masters
3               Bachelor    Bachelor    Bachelor        Masters
4               Bachelor    NaN NaN     Masters         Masters
...


我想添加像这样的列:

        Q1          Q2         Q3           Q4     Bachelor  Masters  Postgrad
0   Bachelor    Postgrad    Postgrad    Masters       1        1        2
1   Bachelor    Postgrad    Postgrad    Bachelor      2        0        2
2   Masters     Postgrad    Postgrad    Masters       0        2        2
3   Bachelor    Bachelor    Bachelor    Masters       3        1        0
4   Bachelor      NaN       Masters     Masters       1        1        1
...


我尝试并能够将Q1到Q4合并到一列中,但是无法计算唯一值并将这些计数打印在单独的列中。任何帮助,将不胜感激。

最佳答案

您正在寻找get_dummies

s=pd.get_dummies(df,prefix='', prefix_sep='').sum(1,level=0)
s
Out[502]:
   Bachelor  Masters  Postgrad
0         1        1         2
1         2        0         2
2         0        2         2
3         3        1         0
4         1        2         0
# then using concat
df=pd.concat([df,s],axis=1)

10-06 05:22