我的pandas DataFrame中有两列。
A B
0 1 5
1 2 3
2 3 2
3 4 0
4 5 1
我需要A中的值,其中B的值最小。在上面的例子中,我的答案是4,因为最小B值是0。
任何人都可以帮我吗?
答案 0 :(得分:5)
要查找B列中的最小值,您可以使用df.B.min()
。对于您的DataFrame,这将返回0
。
要在DataFrame中的特定位置查找值,您可以使用loc
:
>>> df.loc[(df.B == df.B.min()), 'A']
3 4
Name: A, dtype: int64
所以在这里,loc
选出列B等于其最小值(df.B == df.B.min()
)的所有行,并选择A列中的相应值。
此方法返回A中与B中的最小值对应的所有值。如果您只需要找到其中一个值,则更好的方法是使用idxmin
,如@aus_lacy所示。
答案 1 :(得分:3)
以这种方式:
b_min = df.B.idxmin()
a_val = df.A[b_min]
idxmin()
返回列B
中的最小值索引。然后,您可以在列A
中的相同索引处找到该值。
或者如果你想要一个虽然不太可读的行,你可以这样做:
a_val = df.A[df.B.idxmin()]
此外,作为免责声明,此解决方案假定列B
中的最小值是唯一的。例如,如果您的数据集如下所示:
A B
1 2
2 5
3 0
4 3
5 0
我的解决方案将返回B
的最小值所在的第一个实例,在这种情况下,它位于第三行并且具有相应的A
值3
。如果您认为B
的最小值不是唯一的,那么您应该使用@ ajcr的解决方案。