Étant donné deux dataframes, df_1 et df_2, où df_1 contient une colonne datetime et les valeurs A et B, et df_2 contient des plages de valeurs datetime et informations d'événement correspondantes, une tâche courante consiste à fusionner ces trames de données en fonction de la condition que les valeurs datetime dans df_1 se situe dans les plages spécifiées dans df_2.
Une approche simple pour y parvenir consiste à créer un index d'intervalle à partir des colonnes de début et de fin de df_2 et à définir le paramètre fermé sur les deux. Cela garantit que les plages sont inclusives.
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'],df_2['end'],closed='both')
Une fois l'index d'intervalle créé, nous pouvons utiliser la méthode get_loc de IntervalIndex pour localiser la plage contenant la valeur datetime de df_1 pour chaque ligne.
df_1['event'] = df_1['timestamp'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)]['event'])
En appliquant cette fonction à chaque valeur de la colonne datetime de df_1, nous pouvons remplir une nouvelle colonne, event, qui contient les informations d'événement correspondantes de df_2 pour chaque ligne de df_1.
Cette approche offre un moyen efficace de joindre des trames de données en fonction d'une condition de plage en utilisant les puissantes capacités d'indexation d'intervalle fournies par Pandas. La sortie sera une trame de données avec toutes les colonnes de df_1 et df_2, la colonne d'événements fournissant les événements correspondants pour chaque ligne de df_1.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!