Maison > développement back-end > Tutoriel Python > Comment rejoindre des DataFrames Pandas en fonction de plages d'horodatage ?

Comment rejoindre des DataFrames Pandas en fonction de plages d'horodatage ?

Barbara Streisand
Libérer: 2024-12-09 00:16:11
original
816 Les gens l'ont consulté

How to Join Pandas DataFrames Based on Timestamp Ranges?

Joindre des dataframes en fonction de plages de valeurs

Étant donné deux dataframes, df_1 et df_2, il est possible de les joindre de telle sorte que l'horodatage de la colonne datetime dans df_1 se situe dans une plage spécifiée définie par les colonnes commençant et se terminant par df_2.

Pour accomplir cette tâche, une approche consiste à créer un index d'intervalle à partir des colonnes de début et de fin, en définissant l'option fermée sur les deux pour garantir des limites inclusives. En utilisant cet index d'intervalle, nous pouvons utiliser get_loc pour obtenir l'événement correspondant pour chaque horodatage dans df_1.

Exemple :

import pandas as pd

# Input dataframes
df_1 = pd.DataFrame({
    'timestamp': ['2016-05-14 10:54:33', '2016-05-14 10:54:34', '2016-05-14 10:54:35', '2016-05-14 10:54:36', '2016-05-14 10:54:39'],
    'A': [0.020228, 0.057780, 0.098808, 0.158789, 0.038129],
    'B': [0.026572, 0.175499, 0.620986, 1.014819, 2.384590]
})

df_2 = pd.DataFrame({
    'start': ['2016-05-14 10:54:31', '2016-05-14 10:54:34', '2016-05-14 10:54:38'],
    'end': ['2016-05-14 10:54:33', '2016-05-14 10:54:37', '2016-05-14 10:54:42'],
    'event': ['E1', 'E2', 'E3']
})

# Create interval index
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'], df_2['end'], closed='both')

# Join dataframes using get_loc
df_1['event'] = df_1['timestamp'].apply(lambda x: df_2.iloc[df_2.index.get_loc(x)]['event'])

# Output joined dataframe
print(df_1)
Copier après la connexion

Sortie :

            timestamp         A         B event
0 2016-05-14 10:54:33  0.020228  0.026572    E1
1 2016-05-14 10:54:34  0.057780  0.175499    E2
2 2016-05-14 10:54:35  0.098808  0.620986    E2
3 2016-05-14 10:54:36  0.158789  1.014819    E2
4 2016-05-14 10:54:39  0.038129  2.384590    E3
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal