该问题与How to concatenate combinations of rows from two different dataframes?有关,但略有不同。
我有两个带有共同列的数据框。我想创建一个新的数据框,其列名是公共列加上两个数据框列的串联。
结果数据框将在两个数据集中在同一列中具有相同值的行之间具有所有可能的组合(笛卡尔乘积?)。
两个原始数据集是:
df1 = pd.DataFrame({'common': ['x', 'y', 'y'], 'A': ['1', '2', '3']})
df2 = pd.DataFrame({'common': ['x', 'x', 'y'], 'B': ['a', 'b', 'c']})
,结果数据集将是:
df3 = pd.DataFrame({'common': ['x', 'x', 'y', 'y'],
'A': ['1', '1' '2', '3'],
'B': ['a', 'b', 'c', 'c']})
答案 0 :(得分:2)
使用熊猫的合并:
df1 = pd.DataFrame({'common': ['x', 'y', 'y'], 'A': ['1', '2', '3']})
df2 = pd.DataFrame({'common': ['x', 'x', 'y'], 'B': ['a', 'b', 'c']})
df3=pd.merge(df1,df2,on='common')