[英]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.