Самый быстрый способ сглаживания вложенного pandas кадра данных - PullRequest
0 голосов
/ 23 марта 2020

Я работаю со строкой данных 1,000,000+ pandas, которая выглядит примерно так:

DEPARTMENT     ACTION      TASK_CODE      TIME_DURATION
A              CLEAN       0001           25.0
B              REWORK      0002           20.0
C              SCRAP       0003           21.0
D              FIX         0004           22.0
E              DESTROY     0005           24.0

Моя цель - рассчитать среднее значение TIME_DURATION для каждого DEPARTMENT на ACTION на TASK_CODE. Я сделал следующее:

for dep, df1 in df.groupby("DEPARTMENT"):
    for act, df2 in df1.groupby("ACTION"):
        for code, df3 in df2.groupby("TASK_CODE"):
            average_duration = df3["TIME_DURATION"].mean()

Это не очень хорошее решение из-за сложности O (n3). Это занимает некоторое время с размером кадра данных, который у меня есть. Каким самым быстрым способом можно go выполнить вышеупомянутую задачу?

PS. Я попробовал for x, df1 in df.groupby(["DEPARTMENT", "ACTION", "TASK_CODE"]): Эта операция заняла значительно больше времени, чем первая. Кроме того, если название вопроса не имеет смысла, предложите внести изменения.

...