Python 如何转置一个列,并获得列中相同值的计数和百分比?

Python 如何转置一个列,并获得列中相同值的计数和百分比?,python,pandas,dataframe,Python,Pandas,Dataframe,我有如下数据帧 Q1 Q2 1 2 2 3 3 4 4 1 1 4 2 3 我想做的是,我想把每一列转换成行,得到相同值和百分比的计数 我的预期输出应该是 1 2 33% Q1 2 2 33% 3 1 16% 4 1 16% 1 1 16% Q2 2 1 16% 3 2 33% 4 2.

我有如下数据帧

  Q1   Q2
   1    2    
   2    3 
   3    4
   4    1
   1    4
   2    3
我想做的是,我想把每一列转换成行,得到相同值和百分比的计数

我的预期输出应该是

    1    2  33%
Q1  2    2  33%
    3    1  16% 
    4    1  16%

    1    1  16%
Q2  2    1  16% 
    3    2  33%
    4    2. 33% 

 
与一起使用,然后通过将
系列
转换为一列数据帧。对于百分比除以每个第一级
a
的总和:

df1 = (df.melt(var_name='a', value_name='b')
         .groupby('a')['b']
         .value_counts(sort=False)
         .to_frame(name='count'))
df1['perc'] = df1['count'].div(df1['count'].sum(level=0), 0).mul(100)
print (df1)
      count       perc
a  b                  
Q1 1      2  33.333333
   2      2  33.333333
   3      1  16.666667
   4      1  16.666667
Q2 1      1  16.666667
   2      1  16.666667
   3      2  33.333333
   4      2  33.333333
如有需要,百分比:

df1['perc'] = df1['perc'].astype(int).astype(str).add('%')
print (df1)
      count perc
a  b            
Q1 1      2  33%
   2      2  33%
   3      1  16%
   4      1  16%
Q2 1      1  16%
   2      1  16%
   3      2  33%
   4      2  33%

天哪!!你是个巫师还是什么?非常感谢你!!!如果可以的话,最后一件事是不必要的,我得到的是Q1之后的Q10,而不是Q2,任何排序顺序的方法,比如Q1、Q2、Q3。。。。。。。。Q10.@GetSome_389;-您可以添加
df1=df1.reindex(df.columns,level=0)