我有2个数据框:
df1 = pd.DataFrame({'code': ['11', '12', '13', '14'],
'name': ['a', 'a', 'b', 'c']})
df2 = pd.DataFrame({'code': ['15', '16', '17', '18', '19', '20'],
'name': ['a', 'a', 'b', 'c', 'c', 'c']})
我需要构建一个矩阵,该矩阵将包含来自两个DataFrame的所有相同名称的代码对。 矩阵应如下所示:
pairs value from df1 value from df2
a-a 11 15
a-a 11 16
a-a 12 15
a-a 12 16
b-b 13 17
c-c 14 18
c-c 14 19
c-c 14 20
对此表示感谢
答案 0 :(得分:1)
将DataFrame.merge
与DataFrame.insert
一起使用:
df = df1.merge(df2, on='name', suffixes=(' from df1',' from df2'))
df.insert(0, 'pairs', df['name'] + '-' + df.pop('name'))
print (df)
pairs code from df1 code from df2
0 a-a 11 15
1 a-a 11 16
2 a-a 12 15
3 a-a 12 16
4 b-b 13 17
5 c-c 14 18
6 c-c 14 19
7 c-c 14 20