【问题标题】:Looping through lists to create a cartesian product by row pandas循环遍历列表以按行创建笛卡尔积 pandas
【发布时间】:2019-12-20 18:31:38
【问题描述】:

我想通过跨多个列表的交叉产品来扩展我的行。我目前使用的逻辑是:

list = [['Yes', 'No', 'Maybe'], ['Yes', 'No', 'Maybe']]
    index = pd.MultiIndex.from_product(list, names = ["column1", "column2"])
    pd.DataFrame(index = index).reset_index()

不幸的是,这不适用于多个列表。我如何能够运行如下所示的笛卡尔积: [[['是','否','也许'],['是','否','也许']],[['是','否','也许'],['是' , '不', '也许']]] 并且仍然让它们只运行两列。我希望产生 18 (2 * (3 ^ 2)) 的叉积。

【问题讨论】:

  • 你能用你正在寻找的预期输出更新问题吗?
  • 预期的输出会有用
  • 预期输出,并使每个列表都不相同,这将极大地帮助人们了解这 18 种产品的来源。也许您正在寻找[[*itertools.product(*x)] for x in lst]
  • 他们的主要兴趣点是我有一个嵌套在一个列表中的两个列表。我如何能够在每个列表上单独运行我上面包含的代码,并将它们附加到最后?
  • 请查看How to make good pandas examples 并提供示例输入和输出,因为您的问题措辞方式不清楚您实际需要完成什么

标签: python pandas loops product cartesian


【解决方案1】:

itertools.product 允许您从任意数量的迭代创建笛卡尔积:

itertools.product(*lst)

【讨论】:

  • IIUC、itertools.productpd.MultiIndex.from_product 提供的内容几乎相同。
猜你喜欢
  • 2021-10-22
  • 1970-01-01
  • 2021-03-06
  • 2011-08-11
  • 2020-09-12
  • 2012-10-27
  • 2019-03-30
相关资源
最近更新 更多