鉴于包含多列(可能的回归量)的DataFrame,如何生成所有可能的列组合以将其测试为不同的回归?我试图从所有可能的回归量组合中选择最佳回归模型。
例如,我有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
答案 0 :(得分:7)
如果您正在寻找列的组合以相互回归
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))]
答案 1 :(得分:4)
尝试使用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')]