【问题标题】:Pass / Fail Dataframe example通过/失败数据框示例
【发布时间】:2021-06-22 10:24:24
【问题描述】:

我有以下代码:

  import pandas as pd
    
    status = ['Pass','Fail']
    item_info = pd.DataFrame({
        'student': ['John','Alice','Pete','Mike','John','Alice','Joseph'],
        'test': ['Pass','Pass','Pass','Pass','Pass','Pass','Pass']
    })
    
    item_status = pd.crosstab(item_info['student'],item_info['test'])
    print(item_status)

产生:

| Student | Pass |
|---------|------|
| Alice   | 2    |
| John    | 2    |
| Joseph  | 1    |
| Mike    | 1    |
| Pete    | 1    |

但是,我想创建如下所示的内容:

| Student | Pass | Fail | Total |
|---------|------|------|-------|
| Alice   | 2    | 0    | 2     |
| John    | 2    | 0    | 2     |
| Joseph  | 1    | 0    | 1     |
| Mike    | 1    | 0    | 1     |
| Pete    | 1    | 0    | 1     |

如何更改代码,使其包含所有学生的 0 失败列并提供总数?

【问题讨论】:

    标签: python pandas dataframe crosstab


    【解决方案1】:

    在事先不知道现有标签的情况下添加额外标签的通用解决方案,reindex

    cols = item_info['test'].unique().tolist()+['Fail'] #adding the extra label
    pd.crosstab(item_info['student'],item_info['test']).reindex(columns=cols,fill_value=0)
    

    或者取决于你想要什么,我假设你正在寻找链接方法:

    item_status = pd.crosstab(item_info['student'],item_info['test'])
    item_status['Fail'] = 0
    

    test     Pass  Fail
    student            
    Alice       2     0
    John        2     0
    Joseph      1     0
    Mike        1     0
    Pete        1     0
    

    【讨论】:

    • @DanielMDunning 很高兴为您提供帮助。编码愉快!
    • @DanielMDunning 欢迎来到 Stackoverflow!如果这回答了您的问题,您可能会accept得到答案。
    猜你喜欢
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多