我正在尝试根据熊猫数据框索引中的最接近值选择数据。 我从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
谢谢。
答案 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'])