我有2个不同大小的行的数据框.我想要比较两个数据框之间的相似性,并基于两个列:ategory_id和Size.结果可以放入新的数据框中.两个数据帧之间的列长度相等.
d1 = {'item_id': [1, 2, 3, 4],
'brand': ['E', 'E', 'E', 'E'],
'category_id': [100, 100, 101, 100],
'size': ['S', 'M', 'S', 'L'],
'cost': [8.15, 12.91, 18.44, 14.95],
'sell': [9.95, 14.49, 19.99, 16.79]
}
d2 = {'item_id': [5, 6, 7, 8, 9, 10],
'brand': ['V', 'V', 'V', 'V', 'V', 'V'],
'category_id': [100, 100, 102, 100, 101, 103],
'size': ['S', 'M', 'XL', 'L', 'XS', 'XXL'],
'cost': [9.29, 13.99, 8.44, 10.95, 11.79, 14.95],
'sell': [10.95, 15.49, 12.99, 12.79, 13.69, 17.29]
}
df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)
df1
item_id brand category_id size cost sell
0 1 E 100 S 8.15 9.95
1 2 E 100 M 12.91 14.49
2 3 E 101 S 18.44 19.99
3 4 E 100 L 14.95 16.79
df2
item_id brand category_id size cost sell
0 5 V 100 S 9.29 10.95
1 6 V 100 M 13.99 15.49
2 7 V 102 XL 8.44 12.99
3 8 V 100 L 10.95 12.79
4 9 V 101 XS 11.79 13.69
5 10 V 103 XXL 14.95 17.29
所需输出:
item_id brand category_id size cost sell
0 1 E 100 S 8.15 9.95
1 5 V 100 S 9.29 10.95
2 2 E 100 M 12.91 14.49
3 6 V 100 M 13.99 15.49
4 4 E 100 L 14.95 16.79
5 8 V 100 L 10.95 12.79
我读过很多显示不同之处的解决方案,但谈到相似之处时,就不多了.我try 了下面的代码,但它只显示了df1中的相似性数据.
common_columns = df1.loc[:, df1.columns.isin(df2.columns)]
这个solution是最接近的,但它的行长相等,所以我认为它在我的情况下不会起作用.