Нахождение ближайших значений в мультииндексированном фрейме данных в pandas - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь выбрать данные на основе ближайших значений в индексах pandas кадра данных. Я прочитал файл из Excel и мультииндексировал фрейм данных следующим образом:

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

Значения, которые я хочу найти, отсутствуют в этом кадре данных, поэтому я хочу искать следующие ближайшие значения. Например, я хочу найти значение Temp для дельты 6,7 и ix 4,9 в 2011 году, но, поскольку эти значения отсутствуют в кадре данных, я должен получить значение Temp с ближайшими индексами, которые в данном случае являются дельтой 7 и IX из 5.1. Итак, строка, из которой я беру данные, это:

Year    delta       ix          Temp
2010    7           5.1           39

Заранее спасибо.

1 Ответ

1 голос
/ 04 апреля 2020

Я бы сбросил индекс для работы со столбцами, что было бы проще.

Затем вы можете суммировать расстояния столбцов от их целей и использовать функцию idxmin , чтобы получить ближайший идентификатор строки:

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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...