Py学习  »  Python

如何从列表中包含数据帧的Python列表元素生成所有可能的组合?

rsx • 3 年前 • 1797 次点击  

下午好 我有一个Python列表。例子:

mylist = [['a', 'b', 'c'],
          [1, 2],
          [df1, df2]]

df1, df2 是数据帧。我想产生类似于 itertools.product(*mylist) .

问题是熊猫数据帧本身是可编辑的,因此 product 回报不是我想要的。我想要:

[('a', 1, df1),
 ('a', 1, df2),
 ('a', 2, df1),
 ('a', 2, df2),
 ('b', 1, df1),
 ('b', 1, df2),
 ('b', 2, df1),
 ('b', 2, df2),
 ('c', 1, df1),
 ('c', 1, df2),
 ('c', 2, df1),
 ('c', 2, df2)]

但是 产品 当然,无法生成所需的ouptut,因为它开始迭代 df1 df2 柱。我怎样才能以优雅的方式解决这个问题?

感谢您的帮助

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130164
 
1797 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Tim Peters
Reply   •   1 楼
Tim Peters    3 年前

你确定吗? product() 迭代传递给它的iterables,但只有一级深度。

>>> from itertools import product
>>> mylist = [[1, 2], ['a', 'b'], [[4, 6], [8, 9]]]
>>> for x in product(*mylist):
...     print(x)
(1, 'a', [4, 6])
(1, 'a', [8, 9])
(1, 'b', [4, 6])
(1, 'b', [8, 9])
(2, 'a', [4, 6])
(2, 'a', [8, 9])
(2, 'b', [4, 6])
(2, 'b', [8, 9])

看见那个 [4, 6] [8, 9] 它们本身就是不相关的 产品() .