pandas.core.groupby.DataFrameGroupBy.idxmin () очень медленный, как я могу сделать мою треску быстрее? - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь выполнить то же действие, что и для группировки SQL, и принять минимальное значение:

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, но в строке 2idxmin () занимает более получаса на ~ 4M столбцах в df, где группировка занимает менее 1 секунды, что мне не хватает, это может занять так много времени?как сделать этот процесс быстрее?это будет быстрее в чистом SQL?

1 Ответ

1 голос
/ 01 мая 2019

используйте альтернативу с DataFrame.sort_values и DataFrame.drop_duplicates:

df1 = df.sort_values(by=['value']).drop_duplicates('id', keep='first')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...