Trouver les valeurs les plus proches dans une trame de données multi-indexé en pandas géants

Hamza Waheed:

Je suis en train de sélectionner des données basées sur des valeurs plus proches des indices d'une trame de données de pandas géants. J'ai lu le fichier Excel et le multiindexed dataframe comme ceci:

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

Le résultat semble un peu quelque chose comme ça.

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

Les valeurs que je veux rechercher ne sont pas présents dans cette trame de données, donc je veux chercher les prochaines valeurs les plus proches. Par exemple, je veux trouver la valeur Temp pour delta de 6,7 et ix de 4,9 en l'an 2011, mais étant donné que ces valeurs ne sont pas dans la trame de données, je devrais obtenir la valeur Temp avec les indices les plus proches, qui dans ce cas sont le delta de 7 et ix de 5,1. Ainsi, la ligne que je prends les données à partir est,

Year    delta       ix          Temp
2010    7           5.1           39

Merci d'avance.

Daniel Geffen:

Je réinitialiser l'index au travail sur des colonnes qui serait plus facile.

Ensuite , vous pouvez additionner les distances des colonnes de leurs cibles et utiliser la idxmin fonction pour obtenir le plus proche ID de ligne:

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

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=406781&siteId=1
conseillé
Classement