1

我有这样的数据:

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

其中subject_IDS每个课程的数量course_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 确定有 this 的学生student_ID没有该科目,而 2 则相反。

我需要遍历每一个subject_IDcourse_ID最后有一个文件确定具有该 ID 的学生是否已经为该课程学习了这些科目中的任何一个(比如先OR转换20然后再做OR; 所以最后将0是该课程中的任何这些科目以及1其他科目)

任何帮助都感激不尽。

4

1 回答 1

0

您可以创建一个 pandas 数据框,在其中合并所有文件,然后每行包含:course_IDsubject_ID和. 然后按照您的建议将该列转换为布尔列。现在您可以对和进行分组:student_IDhas_this_subject_or_nothas_this_subject_or_notcourse_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
于 2019-12-08T21:48:12.147 回答