Skip to main content
 首页 » 编程设计

python之根据条件在 groupby 数据框上创建汇总表

2025年05月04日13cmt

我有一个 pandas dataframe df 看起来像

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 

我需要创建一个按 userid 列分组的摘要数据框 dfsummary,包含三列 userid、correct_classified、incorrect_classified。 如果实际值和预测值相同则分类正确,否则分类错误。

我可以将整个数据帧上的 correct_classfied 算作

correct_classified = submission[(submission['Actual'] == submission['prediction'])] 
incorrect_classified = submission[(submission['Actual'] != submission['prediction'])] 

但不知道要创建按用户 ID 分组的汇总表,它应该看起来像这样

userid  correct_classified  incorrect_classified 
  1             2                    1 
  2             2                    0 

请您参考如下方法:

您可以使用 pd.crosstab创建条件数组后:

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