Maison >développement back-end >Tutoriel Python >Comment calculer efficacement le produit cartésien des DataFrames dans Pandas ?

Comment calculer efficacement le produit cartésien des DataFrames dans Pandas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 17:32:13517parcourir

How to Efficiently Calculate the Cartesian Product of DataFrames in Pandas?

Produit cartésien dans Pandas

Lorsque vous travaillez avec deux ou plusieurs trames de données dans Pandas, il peut être nécessaire d'obtenir leur produit cartésien, ce qui entraîne une nouvelle trame de données avec toutes les combinaisons de lignes des dataframes d'entrée.

Pandas >= 1.2

Dans les versions récentes de Pandas, la fonction de fusion peut être utilisée pour effectuer cette opération avec l'argument how='cross'. Cette approche est à la fois concise et efficace :

import pandas as pd

df1 = pd.DataFrame({'col1':[1,2],'col2':[3,4]})
df2 = pd.DataFrame({'col3':[5,6]})

df_cartesian = df1.merge(df2, how='cross')

Pandas < 1.2

Pour les versions antérieures de Pandas, une technique légèrement différente est requise. Cela implique de créer une colonne clé qui est répétée pour chaque ligne des deux trames de données. Une fois cette colonne clé ajoutée, la fusion peut être utilisée pour effectuer le produit cartésien :

import pandas as pd
from pandas import merge

df1 = pd.DataFrame({'key':[1,1], 'col1':[1,2],'col2':[3,4]})
df2 = pd.DataFrame({'key':[1,1], 'col3':[5,6]})

merge(df1, df2,on='key')[['col1', 'col2', 'col3']]

Cette approche est plus complexe mais fonctionne efficacement dans les anciennes versions de Pandas.

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!

Déclaration:
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