根据熊猫数据框获取热图计数

问题描述:

我有这个foll。数据帧:根据熊猫数据框获取热图计数

ps_variable_1 ps_variable_2 
0  Top 33% Middle 33% 
1  Bottom 33% Middle 33% 
2  Middle 33% Middle 33% 
3  Bottom 33%  Top 33% 
4  Middle 33% Bottom 33% 
5  Top 33% Bottom 33% 
6  Top 33% Bottom 33% 
7  Bottom 33% Middle 33% 
8  Bottom 33%  Top 33% 

我想从中得到一个新的数据框有3列:前33%中33%下33%。每列有3行如下:

   Top 33%  Middle 33% Bottom 33% 
Top 33%   
Middle 33%   
Bottom 33%   

对于每个网格单元,我想根据上面的数据帧计算出现次数。例如。第一行包含ps_variable_1处于前33%或前三分之一的情况的数量,以及ps_variable_2分别处于前三分之一,中三分之一和下三分之一的情况的相应数量。我该怎么做,我更喜欢能够扩展到其他比率的解决方案,例如前20%....

选项1
pd.crosstab

pd.crosstab(df.ps_variable_1, df.ps_variable_2) 

选项2
groupbysize

df.groupby(['ps_variable_1', 'ps_variable_2']).size().unstack(fill_value=0) 

选项3
np.bincount

u1, f1 = np.unique(df.ps_variable_1.values, return_inverse=True) 
u2, f2 = np.unique(df.ps_variable_2.values, return_inverse=True) 
n, m = u1.size, u2.size 
b = np.bincount(f1 * m + f2, minlength=n * m).reshape(n, m) 
pd.DataFrame(b, u1, u2) 
+0

感谢@piRSquared,这是一个伟大的SOLN! – user308827

+1

@ user308827这是一种解脱。我从我的电话回答,但无法检查( - : – piRSquared