如何在 pandas 中执行交叉连接(示例)


您可以使用以下基本语法在 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 中执行交叉连接

假设我们有以下两个 panda 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

以下代码显示了如何在两个 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 中所有可能的行组合。

例如,第一个 DataFrame 的第一行包含A队和18分。该行对应于第二个 DataFrame 的每一行。

那么第一个 DataFrame 的第二行包含B队和22分。该行也对应于第二个 DataFrame 的每一行。

最终结果是一个包含 12 行的 DataFrame。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

如何在 Pandas 中进行左连接
如何在 Pandas 中进行左连接
Pandas 加入或合并:有什么区别?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注