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