我有这样的数据:
course_ID subject_IDS
C242 E434tT423tS32
C98 F8tW109tU275tV33
其中每个course_ID
的subject_IDS
数量不同(可能一门课程有一个,另一个课程有多个(。对于每个subject_IDS
,都有一个文件包含(这些文件应包含相同的学生 ID(,如下所示:
student_IDststudent_IDsthas_this_subject_or_not
124t124t2
54t54t1
832t832t2
99t99t1
其中 1 确定这个student_ID
的学生没有那个科目,而 2 则相反。
我需要遍历course_ID
的每个subject_ID
,最后有一个文件来确定具有该ID的学生是否参加了该课程的任何这些科目(例如通过先将2
转换为0
然后做OR
来做OR
;所以最后将0
在该课程中拥有这些科目中的任何一个,否则1
(任何帮助将不胜感激。
您可以创建一个 pandas 数据帧,在其中合并所有文件,然后每行包含:course_ID
、subject_ID
、student_ID
和has_this_subject_or_not
。然后按照您的建议将has_this_subject_or_not
列转换为布尔列。现在您可以按course_ID
和student_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