Python pandas:合并两个没有键的表格(使用广播所有元素相乘的方法;NxN表格)

12

我想要使用广播关系合并两个数据框: 没有共同的索引,只是想找到这两个数据框中所有行的配对。 因此想要制作 N 行数据框 x M 行数据框 = N*M 行数据框。 是否有规则可以实现这一点而不使用 itertool?

DF1=
  id  quantity  
0  1        20  
1  2        23  

DF2=
      name  part  
    0  'A'   3  
    1  'B'   4  
    2  'C'   5  

DF_merged=
      id  quantity name part 
    0  1        20  'A'  3 
    1  1        20  'B'  4 
    2  1        20  'C'  5 
    3  2        23  'A'  3
    4  2        23  'B'  4
    5  2        23  'C'  5

1
这里有一个简单的 cross-join 答案 链接 - Ran Feldesh
1个回答

18

你可以使用帮助列tmp,在两个DataFrames中都填充1,并在该列上进行merge。最后,您可以drop它:

DF1['tmp'] = 1
DF2['tmp'] = 1

print DF1
   id  quantity  tmp
0   1        20    1
1   2        23    1

print DF2
  name  part  tmp
0  'A'     3    1
1  'B'     4    1
2  'C'     5    1

DF = pd.merge(DF1, DF2, on=['tmp'])
print DF
   id  quantity  tmp name  part
0   1        20    1  'A'     3
1   1        20    1  'B'     4
2   1        20    1  'C'     5
3   2        23    1  'A'     3
4   2        23    1  'B'     4
5   2        23    1  'C'     5

print DF.drop('tmp', axis=1)
   id  quantity name  part
0   1        20  'A'     3
1   1        20  'B'     4
2   1        20  'C'     5
3   2        23  'A'     3
4   2        23  'B'     4
5   2        23  'C'     5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接