筛选数据帧,将所有具有最小值的行保留在列中

2024-05-29 05:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

df = pd.DataFrame([['SAM', 23, 1],
                   ['SAM', 23, 2],
                   ['SAM', 23, 1],
                   ['SAM', 23, 3],
                   ['BILL', 36, 1],
                   ['BILL', 36, 2],
                   ['BILL', 36, 3],
                   ['BILL', 36, 1],
                   ['JIMMY', 33, 4],
                   ['JIMMY', 33, 2],
                   ['JIMMY', 33, 2],
                   ['JIMMY', 33, 3],
                   ['CARTER', 25, 3],
                   ['CARTER', 25, 4],
                   ['CARTER', 25, 5],
                   ['CARTER', 25, 4],
                   ['GRACE', 27, 4],
                   ['GRACE', 27, 5],
                   ['GRACE', 27, 6],
                   ['TOMMY', 32, 7]])
df.columns = ['A', 'B', 'C']

我需要在dataframe中保留最小值为“C”列的所有行,按“A”列分组,并保持B不变。 几乎有相同的主题here 但是如果我使用

df.loc[df.groupby('A').C.idxmin()]

只剩下一行了,我需要所有的。 预期结果:

image of expected result


Tags: columnsdataframedf主题heresamtommyloc
1条回答
网友
1楼 · 发布于 2024-05-29 05:23:22

让我们尝试使用^{}来获得每个组的最小值C,并与df['C']进行比较,并保持那些C值等于最小值:

df.loc[df.groupby('A')['C'].transform('min').eq(df['C'])].reset_index(drop=True)
        A   B  C
0     SAM  23  1
1     SAM  23  1
2    BILL  36  1
3    BILL  36  1
4   JIMMY  33  2
5   JIMMY  33  2
6  CARTER  25  3
7   GRACE  27  4
8   TOMMY  32  7

相关问题 更多 >

    热门问题