Python 如何连接来自两个不同数据帧的行组合?

Python 如何连接来自两个不同数据帧的行组合?,python,pandas,Python,Pandas,我有两个不同列名的数据帧。我想创建一个新的dataframe,其列名是两个dataframes列的串联。结果行数将是两个数据集行之间所有可能的组合(n_行选择2) df1 = pd.DataFrame({'A': ['1', '2']}) df2 = pd.DataFrame({'B': ['a', 'b', 'c']}) 将产生 df3 = pd.DataFrame({'A': ['1', '1', '1', '2', '2', '2'], '

我有两个不同列名的数据帧。我想创建一个新的dataframe,其列名是两个dataframes列的串联。结果行数将是两个数据集行之间所有可能的组合(n_行选择2)

df1 = pd.DataFrame({'A': ['1', '2']})
df2 = pd.DataFrame({'B': ['a', 'b', 'c']})
将产生

df3 = pd.DataFrame({'A': ['1', '1', '1', '2', '2', '2'], 
                       'B': ['a', 'b', 'c', 'a', 'b', 'c']})
使用:


该函数将执行您想要的操作:

pd.DataFrame(list(itertools.product(df1.A,df2.B)),columns=['A','B'])
产品的定义()


您可以使用
pd.MultiIndex

(pd.DataFrame(index=pd.MultiIndex.from_product([df1['A'], df2['B']], 
                                              names=['A','B']))
.reset_index())
输出:

    A   B
0   1   a
1   1   b
2   1   c
3   2   a
4   2   b
5   2   c
def product(*args, repeat=1):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = [tuple(pool) for pool in args] * repeat
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)
(pd.DataFrame(index=pd.MultiIndex.from_product([df1['A'], df2['B']], 
                                              names=['A','B']))
.reset_index())
    A   B
0   1   a
1   1   b
2   1   c
3   2   a
4   2   b
5   2   c