关键词

在Pandas中执行交叉连接的Python程序

交叉连接在Pandas中的一般称呼是笛卡尔积。笛卡尔积是指将两个数据集的每个元素组合成一个新的数据集。Pandas提供了一个函数,可以快速且简单地进行笛卡尔积操作:pandas.DataFrame.merge()

下面演示一下如何在Pandas中执行交叉连接的Python程序:

首先,我们需要导入 Pandas 包。接着,我们需要创建两个数据集 df1 和 df2。这里我们先简单生成两个 DataFrame,前者有一列名为 key,后者有一列 name:

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': range(4)})
df2 = pd.DataFrame({'name': ['Micky', 'Tom', 'Lucy'], 'age': [11, 12, 13]})

仅根据上面两个数据集进行 merge,会发现没有可用于连接的列,因此 merge 结果会是所有列的笛卡尔积:

df3 = pd.merge(df1, df2)
print(df3)

结果为:

   key  value   name  age
0   A      0  Micky   11
1   A      0    Tom   12
2   A      0   Lucy   13
3   B      1  Micky   11
4   B      1    Tom   12
5   B      1   Lucy   13
6   C      2  Micky   11
7   C      2    Tom   12
8   C      2   Lucy   13
9   D      3  Micky   11
10  D      3    Tom   12
11  D      3   Lucy   13

可以看到,df3 是一个包含了所有可能行的笛卡尔积结果的 DataFrame。

df1 和 df2 中都有 key 列,我们可以将其作为 left_on 和 right_on 参数使用。这些参数确定哪些列用于连接。由于使用了同名的作为连接列,所以 merge 将自动调用这些列:

df4 = pd.merge(df1, df2, on='key')
print(df4)

结果为:

  key  value   name  age
0   A      0  Micky   11
1   B      1    Tom   12
2   C      2   Lucy   13
3   D      3  Micky   11

现在,merge 函数的执行结果与 df1 和 df2 中的共同标识列(“key”)有关。

如果您不想保留这些列,可以删除它们:

df5 = pd.merge(df1, df2, on='key').drop('key', axis=1)
print(df5)

结果为:

   value   name  age
0      0  Micky   11
1      1    Tom   12
2      2   Lucy   13
3      3  Micky   11

以上就是在Pandas中执行交叉连接的Python程序的完整攻略,希望可以对你有所帮助。

本文链接:http://task.lmcjl.com/news/17240.html

展开阅读全文