在数据帧和重复数据帧之间配对缺失值并输出到cs

2024-09-20 06:51:47 发布

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

我有一份学校和他们提供的课程的名单。我也有一个独特的课程列表,其中只有一些是在不同的学校提供,而有些不是。我想把每一所学校缺的班级,和学校的名字配对归还

我已经能够返回每个学校的缺课列表,但是我无法配对并返回与每个学校的缺课对应的学校名称

读入数据帧

schools = {'School': ['School A', 'School A', 'School A', 'School B', 'School B', 'School B', 'School C','School C', 'School D'], 'Class': ['Math', 'Chemistry', 'English', 'Math', 'Chemistry', 'English', 'Math', 'Chemistry', 'Physics']}
dfSchool = pd.DataFrame(data=schools)
dfSchool

classes = {'Class': ['Math', 'Chemistry', 'English', 'History', 'Physics']}
dfClasses = pd.DataFrame(data=classes)
dfClasses

按学校分组

grouped = dfSchool.groupby('School')

newdflist = []

for name, group in grouped:
    newdflist.append(group)
    print(name)
    print(group)

把每个学校缺的课还给我

i = 0
while i < 4:
    missingClasses = dfClasses[~dfClasses['Class'].isin(newdflist[i]['Class'])]
    print(missingClasses)
    i += 1

实际结果:

     Class
3  History
4  Physics

     Class
3  History
4  Physics

     Class
2  English
3  History
4  Physics

       Class
0       Math
1  Chemistry
2    English
3    History

预期结果:

  School    Class
3 School A  History
4 School A  Physics

  School    Class
3 School B  History
4 School B  Physics

  School    Class
2 School C  English
3 School C  History
4 School C  Physics

  School    Class
0 School D      Math
1 School D Chemistry
2 School D   English
3 School D   History

Tags: 列表englishgroupmathhistory学校class课程
1条回答
网友
1楼 · 发布于 2024-09-20 06:51:47

打印所需结果的快速答案如下:

    for name, group in grouped:
        print(name)
        print(dfClasses[~(dfClasses.Class.isin(group["Class"]))])

我从中得到的结果是:

   School A
    Class
    3 History
    4  Physics
   School B
    Class
    3 History
    4 Physics
   School C
    Class
    2 English
    3 History
    4 Physics
   School D
    Class
    0 Math
    1 Chemistry
    2 English
    3 History

你要做的就是把它放在一个数据框里而不是打印

希望这有帮助 :)

相关问题 更多 >