下午好!我有一個 Python 串列。例子:
mylist = [['a', 'b', 'c'],
[1, 2],
[df1, df2]]
df1, df2
是 Pandas 資料幀。我想生成類似于itertools.product(*mylist)
.
問題是 Pandas DataFrames 本身就是可迭代的,所以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)]
但是product
,當然,不能生成所需的輸出,因為它開始迭代df1
和df2
列。如何以優雅和 Pythonic 的方式解決這個問題?
任何幫助表示贊賞
uj5u.com熱心網友回復:
你確定嗎?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()
.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450697.html
標籤:python-3.x 熊猫 数据框 迭代工具
上一篇:添加帶有標簽名稱的新列
下一篇:洗掉與條件關聯的所有資料框行