首页  >  文章  >  后端开发  >  在 Pandas 中使用 GroupBy 时如何保留其他列?

在 Pandas 中使用 GroupBy 时如何保留其他列?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-24 18:32:48961浏览

How to Keep Other Columns When Using GroupBy in Pandas?

在 GroupBy 时保留其他列

在 Pandas 数据框中,使用 groupby 根据特定列过滤行可能会导致丢失其他列输出中的列。在执行分组操作(例如查找列的最小值并排除低于阈值的行)时会出现此问题。

要克服此限制并在 groupby 期间保留其他列,有几种方法:

方法 1:使用 idxmin()

idxmin() 返回给定列中具有最小值的行的索引。通过使用此功能,我们可以选择特定的行并保留其所有列:

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

方法 2:排序和优先

按列对数据帧进行排序被过滤,然后取每组的第一个元素还将保留其他列:

<code class="python">df_filtered = 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]})

# Method 1
df_filtered1 = df.loc[df.groupby("item")["diff"].idxmin()]

# Method 2
df_filtered2 = df.sort_values("diff").groupby("item", as_index=False).first()

print(df_filtered1)
print(df_filtered2)</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