从Pandas数据帧中选择组合



数据帧包含库存数据(数据帧中的数据不相关且省略(:

open   high   low   close
MSFT
APPL
IBM
GM
XP
INTC

问题:选择3只股票的组合,这样

  1. 顺序并不重要:如果已经计算了MSFT/APPL/IBM,那么IBM/MMSFT/APPL是多余的
  2. 组合不能有重复项:不能有MSFT/MSFT/APPL

例如,如果一次只选择两种股票,则选择带有";X〃;在下面这可以扩展到三维。

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个嵌套循环(来实现这一点,但我正在寻找更好的解决方案。

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

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

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

则按预期修改CCD_ 2参数(组合的长度(。

最新更新