ForLoop使用Pandas

时间:2017-09-20 07:43:54

标签: python pandas for-loop

我想创建一个具有此结构enter image description here

的数据集

就像创建分层结构数据集一样。最终数据集将具有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:欢迎使用并行计算以缩短计算时间!

2 个答案:

答案 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
...
...