【问题标题】:What is the best way to get combinations of two lists in Python -在 Python 中获取两个列表组合的最佳方法是什么 -
【发布时间】:2018-07-17 16:14:22
【问题描述】:

这就是我想要做的。

我有两个 Pandas DataFrame

要购买的物品清单和数量

ITEM, QTY    
A,1
B,2
C,3

每个项目的可用位置。一件商品可以在多个地点销售。

ITEM, LOCATION
A, LOC1
B, LOC2
B, LOC3
C, LOC4
C, LOC5

我需要找出可以购买物品的所有可能组合

组合1

A, LOC1
B, LOC2
C, LOC4

组合2

A, LOC1
B, LOC2
C, LOC5

组合3

A, LOC1
B, LOC3
C, LOC4

组合4

A, LOC1
B, LOC3
C, LOC5

【问题讨论】:

  • 使用itertools;您需要位置集的product。
  • 可用数量如何影响您需要的解决方案?

标签: python pandas dataframe cartesian-product


【解决方案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}

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多