在大熊猫中,找到每行的最小值,该最小值大于的值

时间:2020-11-03 21:02:53

标签: python pandas pandas-groupby

我有一个看起来像这样的数据框:

pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C2', 'C2', 'C3', 'C3', 'C3', 'C3'],
   ...:                    'B': [1, 4, 8, 9, 1, 3, 8, 9, 1, 4, 7, 0]})
Out[40]: 
     A  B
0   C1  1
1   C1  4
2   C1  8
3   C1  9
4   C2  1
5   C2  3
6   C2  8
7   C2  9
8   C3  1
9   C3  4
10  C3  7
11  C3  0

对于A中的每个组,我想找到最小值大于5的行

我得到的数据框应如下所示:

     A  B
2   C1  8
6   C2  8
10  C3  7

我已经尝试过了,但这并不能给我整行

df[df.B >= 4].groupby('A')['B'].min()

我需要更改什么?

2 个答案:

答案 0 :(得分:3)

使用idxmin而不是min来提取索引,然后使用loc

df.loc[df[df.B > 5].groupby('A')['B'].idxmin()]

输出:

     A  B
2   C1  8
6   C2  8
10  C3  7

或者,您可以使用sort_values后跟drop_duplicates

df[df.B > 5].sort_values('B').drop_duplicates('A')

输出:

     A  B
10  C3  7
2   C1  8
6   C2  8

答案 1 :(得分:0)

另一种方法:过滤xhellox大于五个。 B Groupby,然后在每个组中找到A的{​​{1}}值。

B