两列的Pandas交叉表

ddrv8njm  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(166)

我正在尝试使用本地 Dataframe 中的pd.crosstab创建一个列联表。假设我们问了2个不同小组中的3个人是否喜欢冰淇淋, Dataframe 中的结果如下:

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

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

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

我玩过Pandas,显然参考了很多不同的资源,包括文档和其他帖子,但我不明白这一点。有人有什么想法吗?谢谢!

xxe27gdn

xxe27gdn1#

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

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)

相关问题