python - Creating summary table on groupby dataframe based on condition
问题描述
I have a pandas dataframe df that looks like
userid trip_id segmentid actual prediction
1 13 40 3 3
1 6 2 1 1
1 44 3 2 3
2 70 19 1 1
2 12 5 0 0
I need to create a summary dataframe dfsummary grouped on column userid, having three columns userid, correct_classified, incorrect_classified. If actual and prediction values are same then it is correct classified, otherwise incorrect classified.
I can count the correct_classfied on whole dataframe as
correct_classified = submission[(submission['Actual'] == submission['prediction'])]
incorrect_classified = submission[(submission['Actual'] != submission['prediction'])]
but don’t getting an idea to create summary table grouped on user id, that should look like this
userid correct_classified incorrect_classified
1 2 1
2 2 0
解决方案
You can use pd.crosstab
after creating a conditional array:
flags = np.where(df['actual'].eq(df['prediction']), 'correct', 'incorrect')
res = pd.crosstab(df['userid'], flags)
print(res)
col_0 correct incorrect
userid
1 2 1
2 2 0
推荐阅读
- oracle - 仅针对特定 oracle 过程禁用触发器
- angular - 在angular9中找不到模块'./modules/shipper/shipper.module'?
- firebase - 在 Flutter 中从 FirebaseStorage URI 获取 URL
- javascript - 如何从导入的 SVG 组件中获取尺寸 - nextJS
- python-3.x - 如何在 django 中编写 postgre 查询?
- go - 为什么golang包bcrypt能够在对密码进行哈希处理后检索盐?
- flutter - Fluter:如何向现有模型类添加更多 json 数据?
- python - 前端(在 Angular 中)可以处理多个后端吗?
- java - Java合并2个集合,同时根据特定字段比较和保留对象
- flutter - 什么是 Dart Flutter 中的零参数构造函数