Encontrar los valores más cercanos en una trama de datos multi-indexado en pandas

Hamza Waheed:

Estoy tratando de seleccionar datos basados ​​en valores más cercanos en los índices de una trama de datos pandas. He leído el archivo de Excel y multiindexed la trama de datos de esta manera:

df = df.set_index(['Year', 'delta', 'ix'])

El resultado se ve un poco algo como esto.

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

Los valores que desea buscar no están presentes en esta trama de datos, así que quiero buscar los siguientes valores más cercanos. Por ejemplo, yo quiero encontrar el valor de temperatura para el delta de 6,7 y IX de 4,9 en el año 2011, pero ya que estos valores no están en la trama de datos, que debería obtener el valor de temperatura con los índices más cercanos, que en este caso son delta del 7 y IX de 5,1. Por lo tanto, la fila tomo los datos de es,

Year    delta       ix          Temp
2010    7           5.1           39

Gracias por adelantado.

Daniel Geffen:

Me restablecer el índice para trabajar en columnas que sería más fácil.

A continuación, puede sumar las distancias de las columnas de sus objetivos y utilizar el idxmin función para obtener el más cercano fila Identificación:

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'])

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=406783&siteId=1
Recomendado
Clasificación