在熊猫中的多索引数据框中找到最接近的值

时间:2020-04-04 13:49:02

标签: python pandas dataframe indexing

我正在尝试根据熊猫数据框索引中的最接近值选择数据。 我从excel中读取了文件,并对数据框进行了以下索引:

df = df.set_index(['Year', 'delta', 'ix'])

结果看起来像这样。

Year    delta       ix          Temp
2010    6           4           34
                    5.1         38
        7           4.5         36
                    3.7         37
2011    6           4           37
                    5.1         35
        7           4.5         38
                    3.7         41
2012    6           4           43
                    5.1         39
        7           4.5         38
                    3.7         37.5

我要搜索的值不存在于此数据框中,因此我想查找下一个最接近的值。例如,我想在2011年找到6.7和ix的δ的Temp值,但是由于这些值不在数据框中,因此我应该获得具有最接近索引的Temp值,在这种情况下,它们是7和ix的5.1。 因此,我从中获取数据的行是

Year    delta       ix          Temp
2010    7           5.1           39

谢谢。

1 个答案:

答案 0 :(得分:1)

我将重置索引以在列上工作,这会更容易。

然后,您可以将列与目标的距离求和,并使用idxmin函数来获取最接近的行ID:

df = df.reset_index()
closest_row_id = ((df["Year"] - wanted_year).abs() + (df["delta"] - wanted_delta).abs() + (df["ix"] - wanted_ix).abs()).idxmin()
closest_temperature_row = df.loc[closest_row_id]
# If you only want the temperature you can do:
# closest_temp = df.loc[closest_row_id, "Temp"]
df = df.set_index(['Year', 'delta', 'ix'])
相关问题