如何使用所有可能的因子组合创建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
由于这么少的因素,这可以手动完成,但随着数量的增加,使用一种更加自动化的方式构建它将是切实可行的。
答案 0 :(得分: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。
答案 1 :(得分:0)
由于我想要一个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)