Я пытаюсь определить время, необходимое для ответа на каждый вопрос из журнала постобработки Moodle. Я организовал данные следующим образом:
Пример ДАННЫХ (2 студента и 4 вопроса)
original= [{"Student":"S1","Send":"0:00:00"},{"Student":"S1","Send":"0:01:00"},{"Student":"S1","Send":"0:02:00"},{"Student":"S1","Send":"0:04:00"},{"Student":"S1","Send":"0:05:00"},{"Student":"S2","Send":"0:00:00"},{"Student":"S2","Send":"0:02:00"},{"Student":"S2","Send":"0:04:00"},{"Student":"S2","Send":"0:04:00"},{"Student":"S2","Send":"0:05:00"}]
df = pd.DataFrame(original)
df['Send'] =pd.to_datetime(df['Send'], format='%H:%M:%S') - pd.to_datetime(df['Send'], format='%H:%M:%S').dt.normalize()
df['diff'] = df.sort_values(['Student','Send']).groupby('Student')['Send'].diff()
df
Send Student diff
0 00:00:00 S1 NaT
1 00:01:00 S1 00:01:00 # Send[1]-Send[0]= S1 Time response to P1
2 00:02:00 S1 00:01:00
3 00:04:00 S1 00:02:00
4 00:05:00 S1 00:01:00
5 00:00:00 S2 NaT
6 00:02:00 S2 00:02:00
7 00:04:00 S2 00:02:00
8 00:04:00 S2 00:00:00
9 00:05:00 S2 00:01:00
И я ищу решение, подобное этому: новый фрейм данных, который собирает имя студента и время ответа (столбец diff) для каждого вопроса. Примерно так
Student | P1 | P2 | P3 | P4
---------|---------|---------|---------|---------
S1 | 0:01:00 | 0:01:00 | 0:02:00 | 0:01:00
S2 | 0:02:00 | 0:02:00 | 0:00:00 | 0:01:00
Соображения:
- в данных примера первое значение каждого студента (индекс 0 для S1 и индекс 6 для S2) - это время, в которое был отображен вопрос
- второе значение для каждого ученика (индекс 2 для S1) - это момент, когда ученик сохраняет первый ответ.
- Таким образом, время ответа составляет 0:01:00 - 0 : 00: 00 (Отправить [1] -Отправить [0])
Я уверен, что это простая проблема, но сейчас я застрял и не знаю, как выйти из этого тупика. Любая помощь будет приветствоваться