pandas.core.groupby.DataFrameGroupBy.idxmin()非常慢,如何才能使鳕鱼更快?

时间:2019-05-01 06:47:01

标签: python pandas python-2.7 pandas-groupby

我正在尝试执行与SQL group by相同的操作并采用最小值:

select id,min(value) ,other_fields...
from table
group by ('id')

我尝试过:

dfg = df.groupby('id', sort=False)
idx = dfg['value'].idxmin()
df = df.loc[idx, list(df.columns.values)]

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.idxmin.html 但是第2行,idxmin()在df中的〜4M列上花费了超过半小时,而group by花费了不到1秒,我想念的是要花费这么长时间吗?如何使这个过程更快?在纯SQL中会更快吗?

1 个答案:

答案 0 :(得分:1)

DataFrame.sort_valuesDataFrame.drop_duplicates使用替代项:

df1 = df.sort_values(by=['value']).drop_duplicates('id', keep='first')