我有一个非常大的数据框架,我需要一个基于另一列的组内排序。我知道如何迭代组,对组执行操作,并将所有这些组合并回一个数据帧,但是这很慢,我觉得有更好的方法来实现这一点。这是输入和我想要的。输入:
ID price
1 100.00
1 80.00
1 90.00
2 40.00
2 40.00
2 50.00
输出:
ID price order
1 100.00 3
1 80.00 1
1 90.00 2
2 40.00 1
2 40.00 2 (could be 1, doesn't matter too much)
2 50.00 3
由于这超过了约5kk的记录和约250000个IDs,因此效率非常重要。你知道吗
如果速度是你想要的,那么下面的应该是相当不错的,尽管它有点复杂,因为它在numpy中使用了复数排序。这类似于在包^{} 中编写聚合排序方法时使用的方法(my me)。你知道吗
在我的机器上,5m行需要2秒,这比使用pandas的
groupby.rank
快了大约100倍(尽管我实际上没有运行5m行的pandas版本,因为它需要太长的时间;我不确定@ayhan是如何在30秒内完成的,也许是pandas版本的不同?)。你知道吗如果你使用这个,那么我建议彻底测试它,因为我没有。你知道吗
您可以使用rank:
在一个具有250000个ID(i5-3330)的5m行数据集上,大约需要30秒:
相关问题 更多 >
编程相关推荐