根据熊猫数据框获取热图计数
问题描述:
我有这个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%....
答
选项1pd.crosstab
pd.crosstab(df.ps_variable_1, df.ps_variable_2)
选项2groupby
和size
df.groupby(['ps_variable_1', 'ps_variable_2']).size().unstack(fill_value=0)
选项3np.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)
感谢@piRSquared,这是一个伟大的SOLN! – user308827
@ user308827这是一种解脱。我从我的电话回答,但无法检查( - : – piRSquared