猿问

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

在我的 forum.csv 文件中,有 Student_id 和 course_id 列。该列的数据如下所示:


student_id,course_id

886652,SIM4207

886652,SIM4207

4484596,SSE3306

4484596,SSE3306

5843448,SSE3150

886652,SIM4207

我想做的是,例如,我想计算这两列的出现次数


student_id,course_id, occurrences

886652,SIM4207- 1

886652,SIM4207- 2

4484596,SSE3306- 1

4484596,SSE3306- 2

5843448,SSE3150- 1

886652,SSE3150- 1

这些事件需要保存在数据框中,因为我需要可视化该数据。这是我所做的代码,但我不确定如何放入数据框。


import pandas as pd

data = 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, occurrences

886652,SIM4207, 2

4484596,SSE3306, 2

5843448,SSE3150, 1

886652,SSE3150, 1

表示显示每对的总金额(student_id 和 course_id)


神不在的星期二
浏览 111回答 1
1回答

FFIVE

如果您想返回列中的值student_id和course_id出现的重复次数的累积数量,您可以使用groupby(),transform()函数来解决它cumcount:df['Count'] = df.groupby(['student_id','course_id'])['course_id'].transform('cumcount')+1返回:   student_id course_id  Count0      886652   SIM4207      11      886652   SIM4207      22     4484956   SSE3306      13     4484956   SSE3306      24     5843448   SSE3150      15      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  count0      886652   SIM3150      11      886652   SIM4207      22     4484956   SSE3306      23     5843448   SSE3150      1
随时随地看视频慕课网APP

相关分类

Python
我要回答