当A列存在重复值时,如何找到A列分组数据的最小值和另一列B的最小值

2024-04-26 02:38:08 发布

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

我试图用熊猫来分析数据帧。我的问题类似于:

How to get rows with min values in one column, grouped by other column, while keeping other columns?

除了这个问题(这在我的例子中非常重要),如果分组列有多个最小值,我还需要找到其他列的最小值。如果没有,我需要看到相应的值。你知道吗

这是一个基本的例子

df = pd.DataFrame({'id' : [1,1,1,2,2],
                   'A' : [8,6,6,8,9],
                   'B' : [1,2,4,5,4]})

当此数据帧按“id”分组并按我所需进行聚合(首先在“A”上,然后在“B”上)时,下面是我希望看到的输出:

id  A   B   
1   6   2
2   8   5

注意,当id为1时,有多行具有列“A”的最小值。相应的“B”列值为2和4。因此,它们的最小值作为“B”列的结果返回。你知道吗

我不知道R,所以,我不明白上面链接的答案。不管怎样,这是一个不同的版本。你知道吗


Tags: to数据inidgetwithcolumnmin
2条回答

另一种方法是默认情况下利用groupby排序group_keys。因此,groupby'id, A'会将每个ID的minA组推到顶部。之后,在Breset_indexdrop_duplicate上调用min

df.groupby(['id', 'A'])['B'].min().reset_index().drop_duplicates(subset='id')


Out[298]:
   id  A  B
0   1  6  2
2   2  8  5

IIUC,按B排序后使用idxmin


df.loc[df.sort_values('B').groupby('id')['A'].idxmin()]

   id  A  B
1   1  6  2
3   2  8  5

相关问题 更多 >