有条件地选择pandas DataFrame中的数据

时间:2015-01-23 14:12:16

标签: python pandas dataframe min

我的pandas DataFrame中有两列。

   A      B
0  1      5
1  2      3
2  3      2
3  4      0
4  5      1

我需要A中的值,其中B的值最小。在上面的例子中,我的答案是4,因为最小B值是0。

任何人都可以帮我吗?

2 个答案:

答案 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的最小值所在的第一个实例,在这种情况下,它位于第三行并且具有相应的A3 。如果您认为B的最小值不是唯一的,那么您应该使用@ ajcr的解决方案。