从 Pandas 数据框中选择组合

Posted

技术标签:

【中文标题】从 Pandas 数据框中选择组合【英文标题】:Choosing combinations from Pandas Dataframes 【发布时间】:2021-02-23 06:28:16 【问题描述】:

Dataframe 包含股票数据(dataframe 中的数据无关,省略):

      open   high   low   close
MSFT
APPL
IBM
GM
XP
INTC

问题:选择 3 只股票的组合使得

    顺序不重要:如果 MSFT/APPL/IBM 已计算,则 IBM/MSFT/APPL 是多余的 组合不能有重复项:不能有 MSFT/MSFT/APPL

例如,如果一次只选择两只股票,则选择下方带有“X”的组合。这可以扩展到 3 个维度。

        MSFT   APPL   IBM   GM   XP   INTC
MSFT
APPL    X
IBM     X      X     
GM      X      X     X
XP      X      X     X      X 
INTC    X      X     X      X    X

我可以用非 Python 的方式(3 个嵌套循环)做到这一点,但我正在寻找更好的解决方案。

需要一个不在内存中保存整个多维数据集的解决方案。数据集很大,只保留累积结果,而不是组合或其结果。

【问题讨论】:

【参考方案1】:

您可以使用itertools.combination。它非常有用、快速,并且满足您的两个要求。

from itertools import combinations

stocks = ['MSFT','APPL','IBM','GM','XP','INTC']
list(combinations(iterable=stocks, r=2))

然后按预期修改r 参数(组合长度)。

【讨论】:

我做了这样的事情,因为大数据集的组合爆炸内存需求。感谢您的回答! code stocks = ['MSFT','APPL','IBM','GM','XP','INTC'] combos=combinations(iterable=stocks, r=3) for combo in combos: #do something code

以上是关于从 Pandas 数据框中选择组合的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的代码没有从 Pandas 数据框中选择数据? [复制]

使用值列表从 Pandas 数据框中选择行

使用值列表从 Pandas 数据框中选择行

仅从数据框中选择每个月的最后一周 - Python/Pandas

Pandas 数据框中的随机行选择

从组合框中选择项目时,如何从数据库中获取 ID 值?