这就是我想要做的。
我有两个Pandas DataFrames
商品清单和购买数量
0*
每个ITEM可用的位置。一项可以在多个位置使用。
ITEM, QTY
A,1
B,2
C,3
我需要找出可以购买ITEMS的所有可能组合
组合1
ITEM, LOCATION
A, LOC1
B, LOC2
B, LOC3
C, LOC4
C, LOC5
组合2
A, LOC1
B, LOC2
C, LOC4
组合3
A, LOC1
B, LOC2
C, LOC5
组合4
A, LOC1
B, LOC3
C, LOC4
答案 0 :(得分:1)
您可以使用itertools.product
。对于可变数量的变量,可以使用字典。
from itertools import product
d = df2.groupby('ITEM')['LOCATION'].apply(list).to_dict()
dfs = {i: pd.DataFrame({'LOCATION': j}).assign(ITEM=d.keys())
for i, j in enumerate(product(*d.values()), 1)}
print(dfs)
{1: LOCATION ITEM
0 LOC1 A
1 LOC2 B
2 LOC4 C,
2: LOCATION ITEM
0 LOC1 A
1 LOC2 B
2 LOC5 C,
3: LOCATION ITEM
0 LOC1 A
1 LOC3 B
2 LOC4 C,
4: LOCATION ITEM
0 LOC1 A
1 LOC3 B
2 LOC5 C}