Python3 -- 两列的熊猫交叉表

时间:2021-01-02 21:48:45

标签: python pandas dataframe crosstab contingency

我正在尝试使用本地数据框中的 pd.crosstab 制作列联表。想象一下,我们问了 2 个不同组中的 3 个人他们是否喜欢冰淇淋的问题,这是数据帧中的结果:

group1    | group2    
------------------
yes       | no    
no        | maybe 
yes       | no    

我希望列联表看起来像这样:

      | group1     | group2
----------------------------
yes   | 2          | 0
no    | 1          | 2
maybe | 0          | 1 

我玩过熊猫,显然参考了许多不同的资源,包括文档和其他帖子,但无法弄清楚这一点。有没有人有任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

Pandas 有一个 crosstab 函数可以解决这个问题;首先,您必须melt 数据框:

box = df.melt()
pd.crosstab(box.value, box.variable)

variable    group1  group2
value       
maybe          0    1
no             1    2
yes            2    0

为了性能,groupby 可能会更快,即使它涉及更多步骤:

box.groupby(["variable", "value"]).size().unstack("variable", fill_value=0)