1

我正在尝试根据熊猫数据框索引中最接近的值来选择数据。我从 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 和9 5.1。所以,我从中获取数据的行是,

Year    delta       ix          Temp
2010    7           5.1           39

提前致谢。

4

1 回答 1

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'])
于 2020-04-04T14:49:07.433 回答