gpt4 book ai didi

python - 获得列中 n 最小总和的组

转载 作者:行者123 更新时间:2023-12-04 15:27:03 24 4
gpt4 key购买 nike

我有一个 df:

   a  b  c
0 A 1 0
1 A 1 1
2 A 1 0
3 A 2 1
4 A 2 1
5 A 2 0
6 A 3 0
7 A 3 0
8 A 3 1
9 A 4 1
10 A 4 1
11 A 4 1
12 B 5 0

我想要“a”和“b”组中“c”中 1 的数量/总和,并且仅保留“a”组中具有 2 个最低数量 1 的组。如果 2 组有相同数量的 1,则保留两者!例如,这里有 2 个组有一个 1,一个组有一个 1。在这种情况下,所有三个组都包含 2 个最少数量的 1 在“a”组中:

   a  b  c
0 A 1 0
1 A 1 1
2 A 1 0
3 A 2 1
4 A 2 1
5 A 2 0
6 A 3 0
7 A 3 0
8 A 3 1
12 B 5 0

我试过

groupby and cumsum()

但是我怎样才能得到 n 个最低的 2 个 1 的组呢?可以理解吗?

最佳答案

IIUC,你可以试试这个:

df[df.groupby(['a','b'])['c'].transform('sum').groupby(df['a']).rank(method='dense') <= 2]

输出:

    a  b  c
0 A 1 0
1 A 1 1
2 A 1 0
3 A 2 1
4 A 2 1
5 A 2 0
6 A 3 0
7 A 3 0
8 A 3 1
12 B 5 0

说明

首先,通过按列 'a' 和 'b' 分组创建一个 bool 系列,并对列 'c' 中的数字求和,然后根据按列 'a' 分组对这些总和进行排名,然后将排名与数字 n 进行比较,在本例中为 2。获取组小于 2 的所有记录,通过获取 'a' 和 'b' 的所有组,其中 'c' 的总和在每个组 'a' 中最小。

关于python - 获得列中 n 最小总和的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62052903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com