Pandas でクロス結合を実行する方法 (例付き)


次の基本構文を使用して、パンダでクロス結合を実行できます。

 #create common key
df1[' key '] = 0
df2[' key '] = 0

#outer merge on common key (eg a cross join)
df1. merge (df2, on=' key ', how=' outer ')

次の例は、この関数を実際に使用する方法を示しています。

例: Pandas でのクロス結合の実行

次の 2 つのパンダ DataFrame があると仮定します。

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                    ' points ': [18, 22, 19, 14]})

print (df1)

  team points
0 to 18
1 B 22
2 C 19
3 D 14

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'F'],
                    ' assists ': [4, 9, 8]})

print (df2)

  team assists
0 to 4
1 B 9
2 F 8

次のコードは、2 つの DataFrame でクロス結合を実行する方法を示しています。

 #create common key
df1[' key '] = 0
df2[' key '] = 0

#perform cross join
df3 = df1. merge (df2, on=' key ', how=' outer ')

#drop key column
del df3[' key ']

#view results
print (df3)

   team_x points team_y assists
0 A 18 A 4
1 A 18 B 9
2 A 18 F 8
3 B 22 A 4
4 B 22 B 9
5 B 22 F 8
6 C 19 A 4
7 C 19 B 9
8 C 19 F 8
9 D 14 A 4
10 D 14 B 9
11 D 14 F 8

結果は、各 DataFrame の行の可能なすべての組み合わせを含む DataFrame です。

たとえば、最初のデータフレームの最初の行には、チームA18ポイントが含まれています。この行は、2 番目の DataFrame の各行に対応します。

次に、最初のデータフレームの 2 行目にはチームB22ポイントが含まれます。この行は、2 番目の DataFrame の各行にも対応します。

最終結果は 12 行の DataFrame になります。

追加リソース

次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。

Pandasで左結合を行う方法
Pandasで左結合を行う方法
パンダの結合またはマージ: 違いは何ですか?

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です