我有一个看起来像这样的数据框:
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()
我需要更改什么?
答案 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