如何在 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 任务:

Pandas:如何根据列值选择行
Pandas:如何合并具有相同列值的行
Pandas:如何删除除某些行之外的所有行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注