Python pandas:合并两个没有键的表(将2个数据帧与广播的所有元素相乘; NxN数据帧) [英] Python pandas : Merge two tables without keys (Multiply 2 dataframes with broadcasting all elements; NxN dataframe)

查看:111
本文介绍了Python pandas:合并两个没有键的表(将2个数据帧与广播的所有元素相乘; NxN数据帧)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要合并2个具有广播关系的数据框:
没有通用索引,只想查找2个数据框中的所有行对。
因此,要使N行数据框x M行数据框= N * M行数据框。
是否有任何规则可以在不使用itertool的情况下实现?

I want to merge 2 dataframes with broadcast relationship: No common index, just want to find all pairs of the rows in the 2 dataframes. So want to make N row dataframe x M row dataframe = N*M row dataframe. Is there any rule to make this happen without using 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


推荐答案

您可以使用辅助列 tmp 填充<$ DataFrames 1 generate / pandas.merge.html rel = noreferrer>在此列上的合并 。最后,您可以 drop 它:

You can use helper columns tmp filled 1 in both DataFrames and merge on this column. Last you can drop it:

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

这篇关于Python pandas:合并两个没有键的表(将2个数据帧与广播的所有元素相乘; NxN数据帧)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆