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)