【问题标题】:Join two dataframes to get cartesian product [duplicate]加入两个数据框以获得笛卡尔积[重复]
【发布时间】:2020-06-01 06:50:48
【问题描述】:

如何连接两个数据帧并获得两个数据帧中所有行的笛卡尔积。

df1:

   values
0       4
1       5
2       6

df2:

   values
0       7
1       8
2       9

预期输出:

   values_x  values_y
0         4         7
1         4         8
2         4         9
3         5         7
4         5         8
5         5         9
6         6         7
7         6         8
8         6         9

【问题讨论】:

  • 不,不回答问题
  • 这叫cross join,检查dupe。

标签: python pandas dataframe merge cartesian-product


【解决方案1】:

试试这个:

pd.merge(df1, df2, how = 'outer', left_on = 'value1', right_on = 'value2')

【讨论】:

  • KeyError: 'value2'
  • 我试过这个,但在某些输出中你会得到空值
  • 那么您可能在一个或两个数据框中都有空值。你能检查一下 info() 功能吗?
【解决方案2】:

您可以使用虚拟列进行合并:

df1.assign(dummy=1).merge(df2.assign(dummy=1), on='dummy', how='outer').drop('dummy', axis=1)

输出:

   values_x  values_y
0         4         7
1         4         8
2         4         9
3         5         7
4         5         8
5         5         9
6         6         7
7         6         8
8         6         9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2015-06-16
    • 2015-07-29
    • 2016-11-22
    相关资源
    最近更新 更多