一个DataFrame的所有列的可能组合 - pandas / python

3

如果给出一个包含多个列(可能是自变量)的 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
2个回答

8
如果您正在寻找将列组合起来进行回归分析的方法,请参考以下内容:
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))]

5
尝试使用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')]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接