当前位置: 首页 > 知识库问答 >
问题:

通过/失败数据帧示例

苏淇
2023-03-14

我有以下代码:

  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的Fail列,并提供一个总计?

共有1个答案

杭英杰
2023-03-14

使用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)
test     Pass  Fail
student            
Alice       2     0
John        2     0
Joseph      1     0
Mike        1     0
Pete        1     0
 类似资料:
  • 我正试图使用ARM板上的UART连接从RS485适配器读取寄存器,但没有成功 ARM板:CM-T335-TI AM335x Computer-on-Module http://www.computerab.co.il/products/Computer-on-modules/CM-T335/ PC:运行Ubuntu的x86计算机 从设备:Elnet Pico(能量功率计)-作为modbus从设备工

  • 我想用Python对数据进行切片。分割数据帧的基本任务会给我带来意想不到的错误。 我的代码是: 代码应显示第二列的第二行。 错误消息: 文件“pandas_libs\hashtable_class_helper.pxi”,第1500行,在pandas中_图书馆。哈希表。PyObjectHashTable。get_项键错误:(1,1) 在处理上述异常期间,发生了另一个异常: 回溯(最近一次调用):文

  • 我试图子集一个熊猫DataFrame在python基于两个逻辑语句 即。 但是第3行的语法无效。 有没有一种方法可以在一行中完成?

  • 我正在尝试使用pysparkn和spack-csv使用以下代码将火花数据帧写入s3 但是,我得到的错误是“输出目录已经存在”,我确信输出目录在作业开始之前不存在,我尝试使用不同的输出目录名称运行,但写入仍然失败。 如果我在作业失败后查看s3桶,我发现很少有零件文件是由火花写入的,但当它尝试写入更多时它失败了,脚本在本地运行良好,我在aws集群上使用10个火花执行器。有人知道这段代码有什么问题吗?

  • 连接失败,出现此异常。我无法追踪到底发生了什么? 另外,getconnection之后的db2diag.log是:

  • 问题内容: 我必须与GIT存储库(bitbucket)进行交互。如果我通过bash尝试任何clone / push / pull命令,则效果很好。 无论如何,如果我尝试在jenkins中设置克隆uri,则会得到: 为什么? 问题答案: Jenkins正在使用GnuTLS来处理与Bitbucket通信的TLS部分(即“ HTTPS”中的“ S”)。在这种情况下,有些事情使GnuTLS无法正确建立TL