1

如何使用所有可能的因素组合创建熊猫数据框?

factor1 = ['a','b']
factor2 = ['x','y,'z']
factor3 = [1, 2]
val = 0

这就是我的目标:

   factor1 factor2  factor3  val
      a       x        1      0
      a       y        1      0
      a       z        1      0
      a       x        2      0
      a       y        2      0
      a       z        2      0   
      b       x        1      0
      b       y        1      0
      b       z        1      0
      b       x        2      0
      b       y        2      0
      b       z        2      0

由于因子数量如此之少,这可以手动完成,但随着数量的增加,使用稍微更自动化的方式来构建它是可行的。

4

2 回答 2

1

这就是列表推导的用途。

factor1 = ['a','b']
factor2 = ['x','y,'z']
factor3 = [1, 2]
val = 0

combs = [ (f1, f2, f3, val)
    for f1 in factor2
    for f2 in factor2
    for f3 in factor3 ]
# [ ('a', 'x', 1, 0),
#   ('a', 'x', 2, 0),
#   ('a', 'y', 1, 0),
#   ('a', 'y', 2, 0),
#   ... etc

替换(f1, f2, f3, val)为您想用来打印表格的任何内容。或者您可以从元组列表中打印它。

在数学上这被称为笛卡尔积

于 2013-09-10T18:04:58.133 回答
1

因为我想要一个熊猫数据框,所以我实际上创建了一个字典列表(为了有列名):

import pandas as pd

combs = [ {'factor1':f1, 'factor2':f2, 'factor3':f3, 'val':val} for f1 in factor1 for f2 in factor2 for f3 in factor3 ]
df = pd.DataFrame(combs)
于 2013-09-10T18:26:15.543 回答