簡體   English   中英

Python3 — 兩列的 pandas 交叉表

[英]Python3 — pandas crosstab for two columns

我正在嘗試使用本地 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 並且顯然引用了許多不同的資源,包括文檔和其他帖子,但無法弄清楚。 有沒有人有任何想法? 謝謝!

Pandas 有一個交叉表function 可以解決這個問題; 首先你必須 熔化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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM