繁体   English   中英

在 pandas 中的多索引 dataframe 中查找最接近的值

[英]Finding the closest values in a multi-indexed dataframe in pandas

我正在尝试根据 pandas dataframe 的索引中的最接近值来计算 select 数据。 我从 excel 读取文件并像这样对 dataframe 进行多索引:

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

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

Year    delta       ix          Temp
2010    7           5.1           39

提前致谢。

我会重置索引以处理更容易的列。

然后,您可以将列与其目标的距离相加,并使用idxmin function 来获取最近的行 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'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM