如何在 pandas dataframe 中查找最近值(带有示例)
您可以使用以下基本语法来查找 pandas DataFrame 中包含与特定列中指定的值最接近的值的行:
#find row with closest value to 101 in points column df_closest = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:1]]
以下示例展示了如何在实践中使用此语法。
示例:在 Pandas DataFrame 中查找最接近的值
假设我们有以下 pandas DataFrame,其中包含不同篮球队的得分:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['Mavs', 'Nets', 'Hawks', 'Kings', 'Spurs', 'Cavs'], ' points ': [99, 100, 96, 104, 89, 93]}) #view DataFrame print (df) team points 0 Mavs 99 1 Nets 100 2 Hawks 96 3 Kings 104 4 Spurs 89 5 Cavs 93
现在假设我们要选择 DataFrame中点列中包含最接近101的值的行。
我们可以使用以下语法来做到这一点:
#find row with closest value to 101 in points column df_closest = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:1]] #view results print (df_closest) team points 1 Nets 100
从结果中我们可以看到,篮网队的得分列最接近101 。
请注意,我们还可以使用tolist()仅显示最接近的值本身,而不是 pandas DataFrame 中的整行:
#display value closest to 101 in the points column df_closest[' points ']. tolist () [100]
另请注意,我们可以更改argsort()函数之后的值以查找多个最接近的值。
例如,我们可以使用以下语法在 DataFrame 中查找点列中 2 个值最接近101的行:
#find rows with two closest values to 101 in points column df_closest2 = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:2]] #view results print (df_closest2) team points 1 Nets 100 0 Mavs 99
从结果中我们可以看到,篮网队的得分值最接近101 ,而小牛队的得分值最接近101 。
其他资源
以下教程解释了如何执行其他常见的 panda 任务: