pivot_table我在与 的性能上挣扎groupby
一方面我有:
%time df.groupby(['INDEX', 'COLUMN']).agg({'VALUE':['sum','size']}).unstack(level='COLUMN')
CPU times: user 2.28 s, sys: 29.8 ms, total: 2.31 s
Wall time: 2.36 s
Run Code Online (Sandbox Code Playgroud)
另一方面我得到:
%time pd.pivot_table(df, index='INDEX', columns='COLUMN', values='VALUE', aggfunc=[len, np.sum], fill_value=0)
CPU times: user 1min 51s, sys: 1.57 s, total: 1min 53s
Wall time: 1min 54s
Run Code Online (Sandbox Code Playgroud)
这些本质上是相同的,但我得到了 60 倍的性能差异。这是为什么?
我的样本中有 800k 行,其中大约 400k 是唯一的INDEX,并且COLUMN有 16 个唯一值。