看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 pandas 中,有两个 DataFrame,如果想实现笛卡尔积拼接,应该如何做呢?在例将为大家展示这样的操作。本功能需要 pandas 1.2 及以上。
两个原始数据如下:
import pandas as pd
df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col3': [5, 6]})
df1
'''
col1 col2
0 1 3
1 2 4
'''
df2
'''
col3
0 5
1 6
'''
需要将 df1 和 df2 根据索引拼接起来,拼接按照笛卡尔积的逻辑。效果如:
'''
col1 col2 col3
0 1 3 5
1 1 3 6
2 2 4 5
3 2 4 6
'''
直接使用 DataFrame 的 merge 方法即可,参数 how 被设置为 'cross',表示执行交叉连接操作。
代码如下:
df1.merge(df2, how='cross')
'''
col1 col2 col3
0 1 3 5
1 1 3 6
2 2 4 5
3 2 4 6
'''
这行代码是使用 pandas 库中的 merge 函数将两个 DataFrame(数据帧)df1 和 df2 进行交叉连接(cross join)的操作。交叉连接会将两个 DataFrame 中的每一行与另一个 DataFrame 中的每一行进行组合,从而生成一个新的 DataFrame,新的 DataFrame 的行数将是原始两个 DataFrame 行数的笛卡尔乘积。
在这行代码中,参数 how 被设置为 'cross',表示执行交叉连接操作。这意味着 df1 中的每一行都会与 df2 中的每一行进行组合,生成一个包含所有可能组合的新 DataFrame。
这样就完成了需求。
(完)
更新时间:2024-08-18 16:17:34 标签:pandas python 笛卡尔积 拼接