我有一个像这样的DataFrame。
df = pd.DataFrame({'a': np.random.randint(0, 3, 10**7), 'b': np.random.randint(0, 4000, 10**7), 'c': np.random.random(10**7)}
我想按前两列分组(无序,与我在此处提供的组数大致相同),然后区分第三列。
df.groupby(['a', 'b']).c.diff(periods=-1)
可悲的是,这对我来说很慢,但我想这是相当多的工作。
>>> %timeit df.groupby(['a', 'b']).c.diff(periods=-1) 10.2 s ± 75.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
有什么办法可以避免 Pandas groupby 加快速度吗?我知道在 Pandas 中进行 groupby->reduce 时,通常可以用纯 NumPy 替换,但我不确定这里是否有什么聪明的方法可以代替 groupby 操作。
胡子哥哥
相关分类