Maison >développement back-end >Tutoriel Python >Comment créer efficacement un produit cartésien de DataFrames Pandas ?
Lorsque vous travaillez avec des dataframes Pandas, il est souvent nécessaire de créer le produit cartésien de deux ou plusieurs dataframes. Cela peut être une opération utile pour combiner des données provenant de plusieurs sources ou explorer les relations entre différentes variables.
Dans les versions récentes de Pandas (>= 1.2), la méthode de fusion croisée La méthode de fusion fournit un moyen pratique de calculer le produit cartésien de deux trames de données. Pour utiliser cette méthode, appelez simplement la fonction de fusion avec l'argument how='cross' :
import pandas as pd df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}) df2 = pd.DataFrame({'col3': [5, 6]}) df_cartesian = pd.merge(df1, df2, how='cross')
La trame de données résultante, df_cartesian, contiendra toutes les combinaisons de lignes de df1 et df2, ce qui donnera un produit cartésien. .
Pour les versions de Pandas antérieures à 1.2, il Il a fallu utiliser une approche légèrement différente pour créer le produit cartésien. Cette approche impliquait l'utilisation de clés répétées dans l'une des trames de données, puis la fusion de ces clés :
df1 = pd.DataFrame({'key': [1, 1], 'col1': [1, 2], 'col2': [3, 4]}) df2 = pd.DataFrame({'key': [1, 1], 'col3': [5, 6]}) df_cartesian = pd.merge(df1, df2, on='key')[['col1', 'col2', 'col3']]
En créant une clé répétée pour chaque ligne des deux trames de données, nous pouvons réaliser efficacement un produit cartésien en fusionnant sur cette clé.
Que vous utilisiez Pandas >= 1.2 ou une version antérieure, les méthodes décrits ci-dessus fournissent des moyens efficaces pour créer le produit cartésien de deux ou plusieurs trames de données. Selon la version spécifique de Pandas que vous utilisez, une approche peut être plus pratique ou efficace que l'autre.
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!