【问题标题】:how to create a factorial data frame in pandas?如何在熊猫中创建阶乘数据框?
【发布时间】:2013-09-10 17:58:51
【问题描述】:

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

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

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

【问题讨论】:

  • 订单对你来说重要吗?
  • @Justin L.:不一定。

标签: python pandas dataframe factors


【解决方案1】:

这就是list comprehensions 的用途。

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) 替换为您想要用于打印表格的任何内容。或者你可以从元组列表中打印出来。

这在数学上称为Cartesian Product

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 2019-01-25
      • 2017-04-10
      • 2021-06-02
      • 1970-01-01
      相关资源
      最近更新 更多