首页  >  文章  >  后端开发  >  如何在 Pandas 中通过最小值选择在 Groupby 过程中保留列?

如何在 Pandas 中通过最小值选择在 Groupby 过程中保留列?

Susan Sarandon
Susan Sarandon原创
2024-10-25 08:18:02174浏览

How to Preserve Columns During Groupby with Minimum Value Selection in Pandas?

在 Groupby 期间使用最小值选择保留列

问题:

执行 groupby 时在 pandas 数据帧上进行操作以选择特定列具有最小值的行时,其他列经常会被无意中删除。当需要来自这些列的附加信息时,这可能会出现问题。

解决方案 1:使用 idxmin() 进行索引选择

要保留其他列,一种方法是使用 idxmin() 获取指定列中具有最小值的元素的索引。然后可以使用这些索引从原始数据框中选择相应的行:

<code class="python">df_min = df.loc[df.groupby("item")["diff"].idxmin()]</code>

解决方案 2:排序并选择第一个元素

另一种方法是按最小值列对数据框进行排序,然后从每个组中选择第一个元素:

<code class="python">df_min = df.sort_values("diff").groupby("item", as_index=False).first()</code>

示例:

这两种解决方案都达到了预期的结果保留其他列,同时选择指定列具有最小值的行:

<code class="python">df = pd.DataFrame({
    "item": [1, 1, 1, 2, 2, 2, 2, 3, 3],
    "diff": [2, 1, 3, -1, 1, 4, -6, 0, 2],
    "otherstuff": [1, 2, 7, 0, 3, 9, 2, 0, 9]
})

df_min_idx = df.loc[df.groupby("item")["diff"].idxmin()]
df_min_sort = df.sort_values("diff").groupby("item", as_index=False).first()

print(df_min_idx)
print(df_min_sort)</code>

输出:

   item  diff  otherstuff
1     1     1           2
6     2    -6           2
7     3     0           0

   item  diff  otherstuff
0     1     1           2
1     2    -6           2
2     3     0           0

以上是如何在 Pandas 中通过最小值选择在 Groupby 过程中保留列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn