在 pandas DataFrame 中有条件地选择数据
Conditional selection of data in a pandas DataFrame
我的 pandas DataFrame 中有两列。
A B
0 1 5
1 2 3
2 3 2
3 4 0
4 5 1
我需要 A 中的值,其中 B 的值最小。在上述情况下,我的答案是 4,因为最小 B 值是 0。
有人可以帮我吗?
要在 B 列中找到最小值,您可以使用 df.B.min()
。对于你的 DataFrame 这个 returns 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 列中选择相应的值。
这种方法returnsA中的所有值对应B中的最小值。如果只需要找到其中一个值,更好的方法是使用idxmin
作为@aus_lacy 建议。
这是一种方法:
b_min = df.B.idxmin()
a_val = df.A[b_min]
idxmin()
returns 列 B
中最小值的索引。然后,您在 A
.
列的同一索引处找到该值
或者如果你想要一行,尽管可读性较差,你可以这样做:
a_val = df.A[df.B.idxmin()]
此外,作为免责声明,此解决方案假定第 B
列中的最小值是唯一的。例如,如果您有一个如下所示的数据集:
A B
1 2
2 5
3 0
4 3
5 0
我的解决方案是 return 第一个实例 B
的最小值所在的位置,在本例中位于第三行,并且对应的 A
值为 3
。如果您认为 B
的最小值不是唯一的,那么您应该使用@ajcr 的解决方案。
我的 pandas DataFrame 中有两列。
A B
0 1 5
1 2 3
2 3 2
3 4 0
4 5 1
我需要 A 中的值,其中 B 的值最小。在上述情况下,我的答案是 4,因为最小 B 值是 0。
有人可以帮我吗?
要在 B 列中找到最小值,您可以使用 df.B.min()
。对于你的 DataFrame 这个 returns 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 列中选择相应的值。
这种方法returnsA中的所有值对应B中的最小值。如果只需要找到其中一个值,更好的方法是使用idxmin
作为@aus_lacy 建议。
这是一种方法:
b_min = df.B.idxmin()
a_val = df.A[b_min]
idxmin()
returns 列 B
中最小值的索引。然后,您在 A
.
或者如果你想要一行,尽管可读性较差,你可以这样做:
a_val = df.A[df.B.idxmin()]
此外,作为免责声明,此解决方案假定第 B
列中的最小值是唯一的。例如,如果您有一个如下所示的数据集:
A B
1 2
2 5
3 0
4 3
5 0
我的解决方案是 return 第一个实例 B
的最小值所在的位置,在本例中位于第三行,并且对应的 A
值为 3
。如果您认为 B
的最小值不是唯一的,那么您应该使用@ajcr 的解决方案。