为了账号安全,请及时绑定邮箱和手机立即绑定

使用 python 计算 2 列中的出现次数数据

使用 python 计算 2 列中的出现次数数据

神不在的星期二 2023-12-12 15:15:36
在我的 forum.csv 文件中,有 Student_id 和 course_id 列。该列的数据如下所示:student_id,course_id886652,SIM4207886652,SIM42074484596,SSE33064484596,SSE33065843448,SSE3150886652,SIM4207我想做的是,例如,我想计算这两列的出现次数student_id,course_id, occurrences886652,SIM4207- 1886652,SIM4207- 24484596,SSE3306- 14484596,SSE3306- 25843448,SSE3150- 1886652,SSE3150- 1这些事件需要保存在数据框中,因为我需要可视化该数据。这是我所做的代码,但我不确定如何放入数据框。import pandas as pddata = pd.read_csv (r'forum.csv')df = pd.DataFrame(data, columns= ['course_id','student_id'])studentcourse = list(zip(df['course_id'], df['student_id']))a= pd.Series(studentcourse).value_counts()print(a)任何人都可以帮我解决这个问题吗?我的预期输出是:student_id,course_id, occurrences886652,SIM4207, 24484596,SSE3306, 25843448,SSE3150, 1886652,SSE3150, 1表示显示每对的总金额(student_id 和 course_id)
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

如果您想返回列中的值student_id和course_id出现的重复次数的累积数量,您可以使用groupby(),transform()函数来解决它cumcount:


df['Count'] = df.groupby(['student_id','course_id'])['course_id'].transform('cumcount')+1

返回:


   student_id course_id  Count

0      886652   SIM4207      1

1      886652   SIM4207      2

2     4484956   SSE3306      1

3     4484956   SSE3306      2

4     5843448   SSE3150      1

5      886652   SIM3150      1

编辑:


根据预期的输出,仅使用 groupby 和aggby会更容易count:


print(df.groupby(['student_id','course_id']).agg({'course_id':'count'}).rename(columns={'course_id':'count'}).reset_index())

返回:


   student_id course_id  count

0      886652   SIM3150      1

1      886652   SIM4207      2

2     4484956   SSE3306      2

3     5843448   SSE3150      1


查看完整回答
反对 回复 2023-12-12
  • 1 回答
  • 0 关注
  • 48 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信