如何从不同大小的文件中进行匹配

2024-04-20 05:49:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一种数据:

course_ID subject_IDS
C242 E434\tT423\tS32
C98 F8\tW109\tU275\tV33

其中每个subject_IDScourse_ID数量不同(可能一个课程有一个,另一个课程有多个)。对于每个subject_IDS,都有一个包含以下内容的文件(这些文件应该包含相同的学生ID):

student_IDs\tstudent_IDs\thas_this_subject_or_not
124\t124\t2
54\t54\t1
832\t832\t2
99\t99\t1

其中1确定这个student_ID的学生没有那个主题,2则相反

我需要遍历course_ID中的每一个subject_ID,最后有一个文件来确定具有该ID的学生是否在该课程中学习过这些科目(比如先将2转换成0,然后再做OR;因此,最后将是0让这些科目中的任何一个在这门课程中,否则1

任何帮助都将不胜感激


Tags: 文件数据ididsstudent学生课程subject
1条回答
网友
1楼 · 发布于 2024-04-20 05:49:36

您可以创建一个pandas数据帧,在其中合并所有文件,然后每行包含:course_IDsubject_IDstudent_IDhas_this_subject_or_not。然后将has_this_subject_or_not列转换为您建议的布尔列。现在您可以在course_IDstudent_ID上分组:

# simplified data:
data = [[1, 1, 1, 0], [1, 2, 1, 1], [2, 1, 1, 0]]
cols = ['course_ID', 'subject_ID', 'student_ID', 'has_this_subject_or_not']
df_combined = pd.DataFrame(data, columns=cols)
df_combined.groupby(by=['course_ID', 'student_ID']).has_this_subject_or_not.sum() > 0

输出

course_ID  student_ID
1          1              True
2          1             False

相关问题 更多 >