我正在为每个组选择一个最大行,并且我使用groupby/ agg来返回索引值并使用选择行loc.
例如,要分组"Id"依次选择具有最高"delta"值的行:
selected_idx = df.groupby("Id").apply(lambda df: df.delta.argmax())
selected_rows = df.loc[selected_idx, :]
Run Code Online (Sandbox Code Playgroud)
但是,这种方式很慢.实际上,当我在1300万行上使用此查询时,我的i7/16G RAM笔记本电脑挂起.
我有两个专家问题:
[更新]非常感谢@unutbu的分析!
sort_drop它是!在我的i7/32GRAM机器上,groupby + idxmax挂起了近14个小时(永远不会返回一个东西)然而sort_drop处理它只需要一分钟!
我仍然需要看看pandas如何实现每个方法,但问题现在解决了!我喜欢StackOverflow.
python performance greatest-n-per-group pandas pandas-groupby