У меня есть следующие данные:Как группировать строки и извлекать средние значения
df =
QUEUE_1 QUEUE_2 QUEUE_3 HOUR TOTAL_SERVICE_TIME TOTAL_WAIT_TIME
ABC123 DEF656 7 20 30
ABC123 7 22 32
DEF656 ABC123 FED456 8 15 12
FED456 DEF656 8 15 16
Я хочу, чтобы вычислить среднее TOTAL_SERVICE_TIME
и TOTAL_WAIT_TIME
для каждого типа QUEUE
(ABC123
, DEF656
, FED456
) в течение часа.
Результат должен быть такой:
result =
QUEUE HOUR AVG_TOT_SERVICE_TIME AVG_TOT_WAIT_TIME
ABC123 7 21 31
ABC123 8 15 12
DEF656 7 20 30
DEF656 8 15 14
FED456 7 0 0
FED456 8 15 14
Это мой текущий код, но это, кажется, не дает ожидаемого результата. В частности, значения HOUR
не упорядочены, а средние значения TOTAL_SERVICE_TIME
и TOTAL_WAIT_TIME
рассчитываются неправильно.
cols = ['QUEUE', 'HOUR', 'TOTAL_SERVICE_TIME', 'TOTAL_WAIT_TIME']
result = pd.melt(
df, ['HOUR', 'TOTAL_SERVICE_TIME', 'TOTAL_WAIT_TIME'],
['QUEUE_1', 'QUEUE_2', 'QUEUE_3'],
value_name='QUEUE')[cols]
Спасибо. Как я могу заставить 'FED456' появиться для' HOUR', равного 7? Значения 'TOTAL_SERVICE_TIME' и' TOTAL_WAIT_TIME' должны быть равны 0 в таких случаях. – Dinosaurius
Кроме того, я получаю сообщение об ошибке «KeyError:« QUEUE ». Обратите внимание, что у меня есть «QUEUE_1», «QUEUE_2» и «QUEUE_3» в исходном фрейме. Я хочу получить уникальный столбец 'QUEUE' с уникальными значениями, как показано в примере. – Dinosaurius
У меня все еще есть одно сомнение. Вы имеете в виду, что я должен сначала выполнить свой код, чтобы получить «результат», а затем выполнить ваш? Мой исходный фреймворк называется 'df', но я вижу только« результат »в вашем коде. Извините, я не очень хорошо объяснил это в начале. – Dinosaurius