从 Pandas 个数据框中选择组合
Choosing combinations from Pandas Dataframes
一个Dataframe包含股票数据(dataframe中的数据无关,省略):
open high low close
MSFT
APPL
IBM
GM
XP
INTC
问题:select 3 只股票的组合使得
- 顺序不重要:如果 MSFT/APPL/IBM 已经计算出来,那么 IBM/MSFT/APPL 是多余的
- 组合不能有重复:不能有MSFT/MSFT/APPL
例如,如果一次只 select 购买两只股票,则 select 下面带有“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
我可以用非 pythonic 的方式(3 个嵌套循环)来做这个,但我正在寻找更好的解决方案。
需要一种不将整个多维数据集保存在内存中的解决方案。数据集很大,只保留累积结果,不保留组合或它们的结果。
您可以使用 itertools.combination
。它非常有用,速度快,并且满足您的两个要求。
from itertools import combinations
stocks = ['MSFT','APPL','IBM','GM','XP','INTC']
list(combinations(iterable=stocks, r=2))
然后按预期修改 r
参数(组合长度)。
一个Dataframe包含股票数据(dataframe中的数据无关,省略):
open high low close
MSFT
APPL
IBM
GM
XP
INTC
问题:select 3 只股票的组合使得
- 顺序不重要:如果 MSFT/APPL/IBM 已经计算出来,那么 IBM/MSFT/APPL 是多余的
- 组合不能有重复:不能有MSFT/MSFT/APPL
例如,如果一次只 select 购买两只股票,则 select 下面带有“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
我可以用非 pythonic 的方式(3 个嵌套循环)来做这个,但我正在寻找更好的解决方案。
需要一种不将整个多维数据集保存在内存中的解决方案。数据集很大,只保留累积结果,不保留组合或它们的结果。
您可以使用 itertools.combination
。它非常有用,速度快,并且满足您的两个要求。
from itertools import combinations
stocks = ['MSFT','APPL','IBM','GM','XP','INTC']
list(combinations(iterable=stocks, r=2))
然后按预期修改 r
参数(组合长度)。