Найти в Дзене

1280. Студенты и экзамены Python (легко)

Задача: Напишите решение, чтобы найти, сколько раз каждый студент посещал каждый экзамен. Возвращает таблицу результатов, упорядоченную по student_id и subject_name.
Дано: Таблица: Students student_id - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит идентификатор и имя одного учащегося в школе. Таблица: Subjects subject_name - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит название одного предмета в школе. Таблица: Examinations Для этой таблицы нет первичного ключа (столбца с уникальными значениями). Он может содержать дубликаты.
Каждый студент из таблицы Students посещает каждый курс из таблицы Subjects.
Каждая строка этой таблицы указывает, что студент с идентификатором student_id посещал экзамен subject_name. Решение:
def students_and_examinations(students: pd.DataFrame, subjects: pd.DataFrame, examinations: pd.DataFrame) -> pd.DataFrame: return pd.merge(

Задача: Напишите решение, чтобы найти, сколько раз каждый студент посещал каждый экзамен.

Возвращает таблицу результатов, упорядоченную по student_id и subject_name.
Дано:

Таблица: Students

student_id - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит идентификатор и имя одного учащегося в школе.

Таблица: Subjects

subject_name - это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит название одного предмета в школе.

Таблица: Examinations

Для этой таблицы нет первичного ключа (столбца с уникальными значениями). Он может содержать дубликаты.
Каждый студент из таблицы Students посещает каждый курс из таблицы Subjects.
Каждая строка этой таблицы указывает, что студент с идентификатором student_id посещал экзамен subject_name.

Решение:
def students_and_examinations(students: pd.DataFrame, subjects: pd.DataFrame, examinations: pd.DataFrame) -> pd.DataFrame:

return pd.merge(

left=pd.merge(

students, subjects, how='cross',

).sort_values(

by=['student_id', 'subject_name']

),

right=examinations.groupby(

['student_id', 'subject_name'],

).agg(

attended_exams=('subject_name', 'count')

).reset_index(),

how='left',

on=['student_id', 'subject_name'],

).fillna(0)[

['student_id', 'student_name', 'subject_name', 'attended_exams'] ]
Результат:

-2

Источник: https://leetcode.com/problems/students-and-examinations/description/