我想创建一个循环,将两个变量的所有迭代加载到单独列中的数据框中。我希望变量“ a”以0.1的增量保持0到1之间的值,而变量“ b”也是如此。换句话说,完成后应该有100次迭代,从0&0开始,以1&1结尾。
我尝试了以下代码
data = [['Decile 1', 10], ['Decile_2', 15], ['Decile_3', 14]]
staging_table = pd.DataFrame(data, columns = ['Decile', 'Volume'])
profile_table = pd.DataFrame(columns = ['Decile', 'Volume'])
a = 0
b = 0
finished = False
while not finished:
if b != 1:
if a != 1:
a = a + 0.1
staging_table['CAM1_Modifier'] = a
staging_table['CAM2_Modifier'] = b
profile_table = profile_table.append(staging_table)
else:
b = b + 0.1
else:
finished = True
profile_table
答案 0 :(得分:1)
您可以使用itertools.product获取所有组合:
import itertools
import pandas as pd
x = [i / 10 for i in range(11)]
df = pd.DataFrame(
list(itertools.product(x, x)),
columns=["a", "b"]
)
# a b
# 0 0.0 0.0
# 1 0.0 0.1
# 2 0.0 0.2
# ... ... ...
# 118 1.0 0.8
# 119 1.0 0.9
# 120 1.0 1.0
#
# [121 rows x 2 columns]
答案 1 :(得分:1)
itertools
是你的朋友。
from itertools import product
for a, b in product(map(lambda x: x / 10, range(10)),
map(lambda x: x / 10, range(10))):
...
range(10)
为我们提供了从0
到10
的整数(遗憾的是,range
在浮点数上失败)。然后,我们将这些值除以10
,以获得从0
到1
的范围。然后,我们以该可迭代的笛卡尔乘积本身来获得每种组合。