我有两个pandas数据帧,我想将每个第二个数据帧行与每个第一个数据帧行组合起来,如下所示:
第一:

val1 val2
1    2
0    0
2    1

第二个:
l1 l2
a    a
b    c

结果(预期结果大小=len(first)*len(second)):
val1 val2 l1 l2
1    2    a    a
1    2    b    c
0    0    a    a
0    0    b    c
2    1    a    a
2    1    b    b

它们没有相同的索引。
当做,
塞科

最佳答案

创建一个代理键来在它们之间进行笛卡尔连接…

import pandas as pd

df1 = pd.DataFrame({'A': [1, 0, 2],
                    'B': [2, 0, 1],
                    'tmp': 1})

df2 = pd.DataFrame({'l1': ['a', 'b'],
                    'l2': ['a', 'c'],
                    'tmp': 1})

print pd.merge(df1, df2, on='tmp', how='outer')

结果:
   A  B  tmp l1 l2
0  1  2    1  a  a
1  1  2    1  b  c
2  0  0    1  a  a
3  0  0    1  b  c
4  2  1    1  a  a
5  2  1    1  b  c

关于python - Pandas 数据框架笛卡尔加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32440716/

10-12 22:50