python - 有没有比 idxmax 更快的替代方法?

标签 python pandas

<分区>

import time
np.random.seed(0)
df = pd.DataFrame({'gr': np.random.choice(7000, 500000),
              'col': np.random.choice(1000, 500000)})
groups = df.groupby('gr')
t1 = time.time()
idx = groups.col.idxmax()
print(round(time.time() - t1,1))
0.7

有没有办法比使用 idxmax() 更快地获得这些指数?

注意,我对idx.values感兴趣,我不介意丢失idxidx.index() 系列

最佳答案

在我这边,使用 drop_duplicatesgroupby idxmax 快 8 倍左右

%timeit df.sort_values(['gr','col']).drop_duplicates('gr',keep='last').index
10 loops, best of 3: 67.3 ms per loop
%timeit df.groupby('gr').col.idxmax()
1 loop, best of 3: 491 ms per loop

关于python - 有没有比 idxmax 更快的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51045551/

相关文章:

python - Swagger 使用 Flask-Restplus、API 和多个蓝图

python - 无法通过 lambda 函数承担角色 - Python

python - 使用递归验证二叉搜索树

Python pandas,按数据框中的日期聚合值

Pandas : How can I assign group number according to specific value?

python - 从数组中提取正值和负值的计数

python - 缓慢的 celery 任务时间

python - 在 'date' 上合并 pandas 中的数据帧仅合并 header

python - 使用 Pandas 创建矩阵结构

arrays - 根据一列中数组的元素选择数据框的行