Python3用于两列的交叉表

2024-04-25 07:49:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使用本地数据帧中的pd.crosstab创建一个列联表。想象一下,我们在两个不同的小组中询问了3个人是否喜欢冰淇淋的问题,下面是数据框中的结果:

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

我希望列联表如下所示:

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

我和熊猫们玩过,显然我引用了很多不同的资源,包括文档和其他帖子,但我无法理解这一点。有人有什么想法吗?谢谢


Tags: 数据no文档小组资源帖子yespd
1条回答
网友
1楼 · 发布于 2024-04-25 07:49:12

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)

相关问题 更多 >