我有一個(gè)像這樣的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)}我想按前兩列分組(無序,與我在此處提供的組數(shù)大致相同),然后區(qū)分第三列。df.groupby(['a', 'b']).c.diff(periods=-1)可悲的是,這對(duì)我來說很慢,但我想這是相當(dāng)多的工作。>>> %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 中進(jìn)行 groupby->reduce 時(shí),通??梢杂眉?NumPy 替換,但我不確定這里是否有什么聰明的方法可以代替 groupby 操作。
我可以在多列上加快 groupby 速度,然后用 1 個(gè)句點(diǎn)進(jìn)行 diff 嗎?
夢(mèng)里花落0921
2022-06-28 16:15:02
