我正在尝试执行与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中会更快吗?
答案 0 :(得分:1)
对DataFrame.sort_values
和DataFrame.drop_duplicates
使用替代项:
df1 = df.sort_values(by=['value']).drop_duplicates('id', keep='first')