Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man das kartesische Produkt von DataFrames in Pandas effizient berechnen?

Wie kann man das kartesische Produkt von DataFrames in Pandas effizient berechnen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 17:32:13474Durchsuche

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

Kartesisches Produkt in Pandas

Wenn Sie mit zwei oder mehr Datenrahmen in Pandas arbeiten, kann es erforderlich sein, deren kartesisches Produkt zu erhalten, was zu einem neuen Datenrahmen mit führt alle Kombinationen von Zeilen aus den Eingabedatenrahmen.

Pandas >= 1.2

In neueren Versionen von Pandas kann die Merge-Funktion verwendet werden, um diesen Vorgang mit dem Argument how='cross' auszuführen. Dieser Ansatz ist sowohl prägnant als auch effizient:

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

Für frühere Versionen von Pandas ist eine etwas andere Technik erforderlich. Dabei wird eine Schlüsselspalte erstellt, die für jede Zeile in beiden Datenrahmen wiederholt wird. Sobald diese Schlüsselspalte hinzugefügt wurde, kann die Zusammenführung verwendet werden, um das kartesische Produkt durchzuführen:

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

Dieser Ansatz ist aufwändiger, funktioniert aber effektiv in älteren Versionen von Pandas.

Das obige ist der detaillierte Inhalt vonWie kann man das kartesische Produkt von DataFrames in Pandas effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn