我正在使用一个超过1,000,000行的熊猫数据框,看起来像这样:
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
我的目标是计算每个TASK_CODE每个动作每个部门的平均TIME_DURATION。我所做的如下:
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)的复杂性,这不是一个很好的解决方案。这与我拥有的数据帧的大小需要一些时间。完成上述任务的最快方法是什么?
PS。我尝试了for x, df1 in df.groupby(["DEPARTMENT", "ACTION", "TASK_CODE"]):
与第一次操作相比,此操作花费的时间明显更长。另外,如果问题标题没有意义,请提出修改建议。