【问题标题】:Python3 -- pandas crosstab for two columnsPython3——两列的熊猫交叉表
【发布时间】:2021-04-09 04:04:53
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python pandas dataframe crosstab contingency


    【解决方案1】:

    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)
    

    【讨论】:

    • 感谢您的快速回复,这对我很有帮助,因为我没有听说过 pd.melt()。我必须确保数据库中只有 group1 和 group2 列,但我很容易使用df = data[['group1', 'group2']] 做到这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-10-30
    • 2021-03-06
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2015-07-30
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多