【问题标题】:Group by with min以 min 分组
【发布时间】:2016-10-31 19:53:49
【问题描述】:

我有一个数据框,我得到以下信息:

   index1  index2   results
0       0       0  8.605016
1       0       1  8.600410
2       0       2  8.585075
3       1       0  8.550355
4       1       1  8.557221
5       1       2  8.557640
6       2       0  4.360486
7       2       1  4.362304
8       2       2  4.354539`

我想按index1 分组并获得最小值。我期望这样的输出:

   index1  index2   results
0       0       2  8.585075
1       1       0  8.550355
2       2       2  4.354539

【问题讨论】:

  • 您想要的输出和问题描述冲突,对两个索引进行分组会产生一个 9 行的 df,但您显示 3 行表示您只想在 index1 上分组
  • 我通过所需的输出更正了问题 - 删除 index2

标签: python pandas dataframe group-by


【解决方案1】:

我的解决方案有效,如果仅groupbyindex1 - 那么您将获得所需的输出。

您首先需要indexes 的值与minidxmin,然后选择ix

print (df.groupby('index1')['results'].idxmin())

print (df.ix[df.groupby('index1')['results'].idxmin()])
   index1  index2   results
2       0       2  8.585075
3       1       0  8.550355
8       2       2  4.354539

另一种解决方案是 sort_valuesgroupby 聚合 first

print (df.sort_values(by="results").groupby('index1', as_index=False).first())
   index1  index2   results
0       0       2  8.585075
1       1       0  8.550355
2       2       2  4.354539

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2022-01-07
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多