如何从列表中具有 Pandas DataFrames 的 Python 中的列表元素生成所有可能的组合?
How to generate all possible combinations from list elements in Python having Pandas DataFrames in list?
下午好!
我在 Python 中有一个列表列表。示例:
mylist = [['a', 'b', 'c'],
[1, 2],
[df1, df2]]
df1, df2
是 Pandas 个数据帧。我想生成类似于 itertools.product(*mylist)
.
的结果
问题是 Pandas DataFrame 本身就是可迭代的,所以 product
returns 的结果不是我想要的。我要:
[('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)]
但是 product
当然无法生成所需的输出,因为它开始遍历 df1
和 df2
列。我怎样才能以优雅且 Pythonic 的方式解决这个问题?
感谢任何帮助
你确定吗? product()
遍历传递给它的可迭代对象,但只有一层深。
>>> 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]
本身就是可迭代对象,与 product()
.
无关
下午好! 我在 Python 中有一个列表列表。示例:
mylist = [['a', 'b', 'c'],
[1, 2],
[df1, df2]]
df1, df2
是 Pandas 个数据帧。我想生成类似于 itertools.product(*mylist)
.
问题是 Pandas DataFrame 本身就是可迭代的,所以 product
returns 的结果不是我想要的。我要:
[('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)]
但是 product
当然无法生成所需的输出,因为它开始遍历 df1
和 df2
列。我怎样才能以优雅且 Pythonic 的方式解决这个问题?
感谢任何帮助
你确定吗? product()
遍历传递给它的可迭代对象,但只有一层深。
>>> 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]
本身就是可迭代对象,与 product()
.