У меня есть следующий набор данных;
Subject Student ID Student Number
0 Cit11 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 45
1 EngLang11 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 45
2 EngLit11 [S110, S111, S112, S113, S114, S115, S116, S11... 21
3 Fre11 [S95, S96, S97, S99, S100, S101, S102, S103, S... 26
4 Ger11 [S114, S115, S116, S117, S118, S124, S125, S12... 13
5 His11 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 45
6 Mat11 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 45
7 Spa11 [S95, S97, S98, S99, S100, S102, S103, S104, S... 23
, где 'Student Number'
- общее число 'Student ID'
в каждом 'Subject'
.
Допустим, максимальное значение 'Student Number'
должно быть 30 (classroom_Max_Capacity возвращает значение), и следующий код возвращает индексы, где 'Student Number'
превышает максимальное число.
idx = filtered_Group[filtered_Group['Student Number'] > classroom_Max_Capacity].index.tolist()
Output: [0, 1, 5, 6]
Мне интересно, можно ли разделить эти строки на две, изменив имя 'Subject'
и 'Student ID'
, чтобы соответствовать максимальному студенту число; например,
Subject Student ID Student Number
0 Cit11_1 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 30
1 Cit11_2 [S110, S115, S116... 15
2 EngLang11_1 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 30
3 EngLang11_2 [S110, S115, S116... 15
4 EngLit11 [S110, S111, S112, S113, S114, S115, S116, S11... 21
5 Fre11 [S95, S96, S97, S99, S100, S101, S102, S103, S... 26
6 Ger11 [S114, S115, S116, S117, S118, S124, S125, S12... 13
7 His11_1 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 30
8 His11_2 [S110, S115, S116... 15
9 Mat11_1 [S95, S96, S97, S98, S99, S100, S101, S102, S1... 30
10 Matt11_2 [S110, S115, S116... 15
11 Spa11 [S95, S97, S98, S99, S100, S102, S103, S104, S... 23
Возможно ли это даже без специальной записи измененного 'Subject'
имени для добавления во фрейм данных?
- правка
Я пытался решить проблему, выполнив что-то вроде:
filtered = filtered_Group.iloc[idx]
student_list = filtered['Student ID'].explode().str.split(', ')
subject_list = filtered['Subject']
for i in idx:
for number in range(classroom_Max_Capacity):
df.append({temp_subject_list[i]: temp_student_list[number]})
Но, конечно, это не работает, поэтому любая помощь будет высоко ценится.