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

Python 如何从不同大小的文件进行匹配,python,pandas,dictionary,set,logical-or,Python,Pandas,Dictionary,Set,Logical Or,我有这样一种数据: course_ID subject_IDS C242 E434\tT423\tS32 C98 F8\tW109\tU275\tV33 student_IDs\tstudent_IDs\thas_this_subject_or_not 124\t124\t2 54\t54\t1 832\t832\t2 99\t99\t1 每个课程ID的科目ID数量不同(可能一个课程有一个,另一个课程有多个)。对于每个科目的ID,都有一个包含以下内容的文件(这些文件应包含相同的学生ID):

我有这样一种数据:

course_ID subject_IDS
C242 E434\tT423\tS32
C98 F8\tW109\tU275\tV33
student_IDs\tstudent_IDs\thas_this_subject_or_not
124\t124\t2
54\t54\t1
832\t832\t2
99\t99\t1
每个
课程ID
科目ID
数量不同(可能一个课程有一个,另一个课程有多个)。对于每个
科目的ID
,都有一个包含以下内容的文件(这些文件应包含相同的学生ID):

course_ID subject_IDS
C242 E434\tT423\tS32
C98 F8\tW109\tU275\tV33
student_IDs\tstudent_IDs\thas_this_subject_or_not
124\t124\t2
54\t54\t1
832\t832\t2
99\t99\t1
其中1确定具有此
学生ID的该学生没有该科目,2则相反

我需要浏览
课程ID
中的每个
科目ID
,最后有一个文件确定具有该ID的学生是否为该课程选修了这些科目(比如先将
2
转换为
0
,然后再执行
;这样,在一门课程中有任何这些科目,最后将是
0
,否则将是
1


任何帮助都将不胜感激。

您可以创建一个pandas数据框,在其中合并所有文件,然后每行包含:
课程ID
科目ID
学生ID
是否有此科目
。然后将
是否有此科目
列转换为布尔列,就像您已经建议的那样ested.现在您可以在
课程ID
学生ID
上分组:

#简化数据:
数据=[[1,1,1,0],[1,2,1,1],[2,1,1,0]]
cols=[“课程ID”、“科目ID”、“学生ID”、“是否有此科目”]
df_combined=pd.DataFrame(数据,列=cols)
df_combined.groupby(by=['course_ID','student_ID'])。是否有此主题。sum()>0
输出

course_ID  student_ID
1          1              True
2          1             False

您可以创建一个pandas数据框,在其中合并所有文件,然后每行包含:
课程ID
科目ID
学生ID
是否有此科目
。然后将
是否有此科目列转换为您建议的布尔列。现在您可以对
课程进行分组_ID
学生ID

#简化数据:
数据=[[1,1,1,0],[1,2,1,1],[2,1,1,0]]
cols=[“课程ID”、“科目ID”、“学生ID”、“是否有此科目”]
df_combined=pd.DataFrame(数据,列=cols)
df_combined.groupby(by=['course_ID','student_ID'])。是否有此主题。sum()>0
输出

course_ID  student_ID
1          1              True
2          1             False

我不认为你所做的是对的,因为在最后,我想知道
学生ID
是否有这个主题。另外,我不能在一开始就把它们全部合并起来,因为
主题ID
有不同的列数(即第一门课程可能有主题,但第二门课程有4个主题)。好吧,我误解了你的问题,因为你说你已经有了
学生ID
在一个文件中给出了这个主题与否的关系,你想知道,对于学生与课程的组合,每个学生是否至少选修了一门必修课。你可以通过为eac创建一个数据框来组合它们h subject file,添加subject和course列,然后连接所有数据帧。然后,上面的代码应该可以工作,但如果我错了,请纠正我。我不认为您所做的是正确的,因为在最后,我想知道
学生ID
是否有此\u subject\u或\u不
。此外,我无法在开始时将所有这些代码组合在一起nce
subject\u id
有不同的列数(即第一门课程可能有科目,但第二门课程有4个科目)。好吧,我误解了你的问题,因为你说你已经有了
学生ID
在一个文件中给出了这个主题与否的关系,你想知道,对于学生与课程的组合,每个学生是否至少选修了一门必修课。你可以通过为eac创建一个数据框来组合它们h主题文件,添加主题和课程列,然后连接所有数据帧。然后,上面的代码应该可以工作,但如果我错了,请更正我。