python - 在 Python 中获取两个列表组合的最佳方法是什么 -

标签 python pandas dataframe cartesian-product

这是我想做的。

我有两个 Pandas 数据框

元素 list 和购买数量

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

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

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

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

组合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。对于可变数量的变量,您可以使用字典。

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}

关于python - 在 Python 中获取两个列表组合的最佳方法是什么 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386017/

相关文章:

python - 如何合并两个表并从 Python 中每个单元格中的先前值计数中划分数字实例?

python - pandas.read_csv 读取非常原始的 CSV 文件(前三个数字编译成 datetime.datetime 对象)的正确设置是什么?

python - 存储 NumPy 行和列标题

python - Twitter 应用程序中的 '__getitem__' 对象中没有属性 'set'

python - ModuleNotFoundError : No module named 'pandas._libs.tslibs.frequencies'

python - 如何压缩数据框

python - 模逆计算卡住了

python - 使用 python 数据框中的两列(值、计数)绘制直方图

python - 如何使用 Airflow 来编排简单的 pandas etl python 脚本?

python - Pandas 数据框无法将列数据类型从对象转换为字符串以进行进一步操作