就像创建分层结构数据集一样。最终数据集将具有100 x 2 x 3 x 25 = 15,000行数据。我正在使用Python和Pandas (变量no.1有100个值。在变量no.1的每个值中,变量no.2将有2个变量。在变量no.2的每个值中,变量no将有3个变量。 3,等等)
我曾尝试将ForLoop用于变量No.4,但我无法弄清楚如何在数据集中交替进行更高级别的变量填充。
variable4= range(0,25)
for i in range (0,25):
dataset.iloc[i,4] = variable4[i]
dataset.iloc[i,3] = 'Var3value'
请给我一些关于如何制作这种结构的建议。
P / s:欢迎使用并行计算以缩短计算时间!
答案 0 :(得分:1)
你可以使用嵌套的for循环强制执行此操作。有更有效的方法来做到这一点,但对于数据大小,这应该没问题。
df = of.DataFrame(columns=['col1', 'col2', 'col3', 'col4'])
for i in range(100):
for j in range(2):
for k in range(5):
for l in range(10):
df.append([i, j, k, l], columns=['col1', 'col2', 'col3', 'col4'])
如果要省略for循环,可以使用itertools.product()。这使它更有效率。如果要一步创建数据框。创建一个2d列表/数组和。生成数据帧。
答案 1 :(得分:1)
您可以使用MultiIndex.from_product
然后调用DataFrame
构造函数:
a = range(100)
b = list('ab')
c = list('ABC')
d = list(range(100, 125))
mux = pd.MultiIndex.from_product([a,b,c,d], names=list('xyuz'))
df = pd.DataFrame({'col':range(15000)}, index=mux)
print (df)
col
x y u z
0 a A 100 0
101 1
102 2
103 3
104 4
105 5
106 6
...
...