#pandas #dataframe
Вопрос:
В моем наборе данных есть столбец с названиями курсов, пройденных студентом. Он имеет несколько значений
Мой набор данных выглядит следующим образом: текущий набор данных
Я хочу изменить его на набор данных, подобный этому: wantDatasetLikethis
Я хочу разделить эти значения (названия курсов) и создать столбец для каждого курса отдельно и присвоить значения 1 или 0 на основе курсов, пройденных студентом. Как я могу это сделать, используя библиотеку Pandas ?
Любая помощь будет признательна, спасибо
Комментарии:
1. Пожалуйста, добавьте образец фрейма данных в свой пост в виде текста. @S Ра
Ответ №1:
Я создал образец фрейма данных, используя данные, которые вы предоставили
StudentID Courses
0 S1 course1, course2, course3
1 S2 course1, course4, course5
Разделите столбец курсы
df['Courses'] = df.Courses.str.split(', ')
StudentID Courses
0 S1 [course1, course2, course3]
1 S2 [course1, course4, course5]
Взорвите колонку курсов
df = df.explode('Courses')
StudentID Courses
0 S1 course1
0 S1 course2
0 S1 course3
1 S2 course1
1 S2 course4
1 S2 course5
Используйте get_dummies для создания отдельного столбца для каждого курса
pd.get_dummies(df.explode('Courses'), columns=['Courses'], prefix='', prefix_sep='')
StudentID course1 course2 course3 course4 course5
0 S1 1 0 0 0 0
0 S1 0 1 0 0 0
0 S1 0 0 1 0 0
1 S2 1 0 0 0 0
1 S2 0 0 0 1 0
1 S2 0 0 0 0 1
Комментарии:
1. Спасибо. Это полезно. Я не хочу повторять студентов подряд. Студенческий билет должен появиться только один раз
2. Используйте
df.set_index('StudentID')
@SRa3. Спасибо. SetIndex не помогает. Я хочу, чтобы данные были в этом формате. Пожалуйста, посмотрите на картинку, приведенную в вопросе.
Ответ №2:
header_list = ['StudentID','Courses','Course1', 'Course2']
df = df.reindex(columns = header_list)
Это включит эти столбцы в фрейм данных. Включая пустые столбцы.