请教各位,Python 实现 两组数据中对应数值的求和组合。

有两组数据分别是需求表与供给表。
需要的结果是需求表中的重量与数量进行不定个数的相加组合,求得供给表中得重量与数量。并且最后再需求表中添加一列标注此行需求数据得货物是由供给表中得哪个公司提供的。
条件是:1.需求重量可以超过供给重量的10%
2.需求数量可以是供给重量的上下10%
3.需求表中的每一条数据只可用一次。
请给指条明路吧。苦思冥想了很久,也不得其果。
尝试过用 itertools.combinations 求得需求重量的所有组合后然后以条件进行筛选,可是编写到最后,无法把组合中的重量与公司形成对应关系。

需求表如下:
序号 重量 数量 购货公司名称
1 5 40 啊1
2 3 30 啊2
3 6 50 啊3
4 13 90 啊4
5 9 70 啊5
6 3 30 啊6
7 21 40 啊7
8 4 45 啊8
9 1 30 啊9
10 5 33 啊10
11 11 44 啊11
12 23 108 啊12
13 7 34 啊13
14 9 43 啊14
15 6 34 啊15
16 3 11 啊16
17 6 23 啊17
18 4 43 啊18
19 6 53 啊19
20 15 165 啊20
21 18 133 啊21
22 8 50 啊22
23 7 30 啊23

供给表如下:
序号 重量 数量 供应商公司名称
1 10 109 A
2 15 199 B
3 80 500 C
4 45 300 D
5 18 60 E
6 10.8 90 F
7 14.86 60 G
8 15 154 H