【问题标题】:pandas.core.groupby.DataFrameGroupBy.idxmin() is very slow , how can i make my code faster?pandas.core.groupby.DataFrameGroupBy.idxmin() 非常慢,我怎样才能让我的代码更快?
【发布时间】:2019-09-19 19:14:24
【问题描述】:

我正在尝试执行与 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 中会更快吗?

【问题讨论】:

    标签: python pandas python-2.7 pandas-groupby


    【解决方案1】:

    使用 DataFrame.sort_valuesDataFrame.drop_duplicates 的替代方案:

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

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 2011-06-14
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多