2012-07-11 512 views
2

給定一個包含多列(可能的迴歸因子)的DataFrame,如何生成所有可能的列組合以測試它們到不同的迴歸中?我試圖從所有可能的迴歸因素組合中選擇最佳的迴歸模型。DataFrame列的所有可能組合 - pandas/python

例如,我有這樣的DataFrame

  A B 
1/1/2011 1 4 
1/2/2011 2 5 
1/3/2011 3 6 

,我想生成以下的:

  A B 
1/1/2011 1 4 
1/2/2011 2 5 
1/3/2011 3 6 

      A 
1/1/2011 1 
1/2/2011 2 
1/3/2011 3 

      B 
1/1/2011 4 
1/2/2011 5 
1/3/2011 6 

回答

3

嘗試使用itertools生成列名的冪:

In [23]: import itertools as iter 

In [24]: def pset(lst): 
    ....:  comb = (iter.combinations(lst, l) for l in range(len(lst) + 1)) 
    ....:  return list(iter.chain.from_iterable(comb)) 
    ....: 


In [25]: pset(lst) 
Out[25]: 
[(), 
('A',), 
('B',), 
('C',), 
('D',), 
('A', 'B'), 
('A', 'C'), 
('A', 'D'), 
('B', 'C'), 
('B', 'D'), 
('C', 'D'), 
('A', 'B', 'C'), 
('A', 'B', 'D'), 
('A', 'C', 'D'), 
('B', 'C', 'D'), 
('A', 'B', 'C', 'D')] 
+0

完美,非常感謝你! – gustavopr 2012-07-11 17:06:41

7

如果您正在尋找colum ns相互抵消

df = DataFrame(numpy.random.randn(3,6), columns=['a','b','c','d','e','g']) 
df2 =[df[list(pair)] for pair in list(iter.combinations(df.columns, 2))]