У меня есть кадр данных pandas, отображающий производительность пользователей по тестовым вопросам. Это выглядит следующим образом:pandas: groupby и unstack для создания вектор-функции для классификации
userID questionID correct
-------------------------------
1 1 1
1 5 1
1 6 0
1 8 0
1 10 1
2 3 1
2 5 1
2 6 0
. . .
. . .
. . .
Я хочу, чтобы вектор функции для каждого пользователя, говорит, получили ли они или нет на каждый вопрос прямо, это выглядит примерно так:
questionID 1 2 3 4 5 6 ...
userID -------------------------------------------------
1 1 NaN NaN NaN 1 0 ...
2 NaN NaN 1 NaN 1 0 ...
. ...
. ...
.
Каждого пользователь только получает показанный подмножество всех вопросов, поэтому это разреженная матрица.
Как я могу сделать таблицу выше в пандах?
Я хотел сделать что-то вроде ниже - группировать по идентификатору userID и questionID, а затем распаковывать, но я не уверен точно, как он должен работать.
df = df.groupby(['user_id','question_id'])
df.unstack()
Благодарим за помощь.
@ user3591836 Обратите внимание, что это собирается в среднем столбец «правильный», поэтому убедитесь, что пары (userID, questionID) уникальны! – U2EF1
@ U2EF1 отличная точка, возможно, «поворот» - это правильная функция для использования здесь (по моему опыту это немного более чувствительно, хотя) ... Я был удивлен, что он позволяет NaN! –
'df.pivot (index = 'userID', columns = 'questionID')' делает то же самое, оба работают нормально. И панда пытается быть дружественным НАN повсюду :) – U2EF1