在 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中文网其他相关文章!