簡體   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