Python 通过/失败数据帧示例
我有以下代码:Python 通过/失败数据帧示例,python,pandas,dataframe,crosstab,Python,Pandas,Dataframe,Crosstab,我有以下代码: 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'] })
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的失败列,并提供一个总数?通用解决方案,它使用
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
“谢谢你,很好用。”丹尼尔邓宁很乐意帮忙。快乐编码@DanielMDunning欢迎来到Stackoverflow!如果这回答了你的问题,你可以回答。
test Pass Fail
student
Alice 2 0
John 2 0
Joseph 1 0
Mike 1 0
Pete 1 0