パンダマルチインデックス付きのデータフレーム内の最も近い値を見つけます

ハムザWaheed:

私はパンダデータフレームのインデックス内の最も近い値に基づいてデータを選択しようとしています。私は、Excelからファイルを読み込むと、このようなデータフレームをmultiindexed:

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と4.9のIXのデルタのための一時値を見つけたいが、これらの値は、データフレームではないので、私はこのケースでは7のデルタある最も近い指数と温度値を取得する必要がありますし、 5.1のIX。だから、私はからデータを取るの行があり、

Year    delta       ix          Temp
2010    7           5.1           39

前もって感謝します。

ダニエル・ゲフィン:

私は容易になるだろう列に仕事にインデックスをリセットします。

そして、あなたは彼らのターゲットからの列の距離を合計して使用することができます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'])

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=406780&siteId=1