[英]Loop through parameter dictionary and create dataframe values
Is there a faster/better way to set parameters and then use them to set values in a dataframe?是否有更快/更好的方法来设置参数,然后使用它们在数据框中设置值? See basic code example below.
请参阅下面的基本代码示例。
df_loop = pd.DataFrame(columns=['streak', 'bet', 'runs'], index=np.arange(1,100,1))
params = {
'streak_game' : [3,4,5,6,7],
'initial_bet' : [50, 100, 150, 200, 250],
'run_diff_abs' : [x for x in range(150, 40,-10)]
}
for i in params['streak_game']:
streak_game = i
for j in params['initial_bet']:
initial_bet = j
for k in params['run_diff_abs']:
run_diff = k
# actual code is more complex, but I am setting a bunch of values similar to below
for idx, row in df_loop.iterrows():
df_loop.loc[idx, 'streak'] = i
df_loop.loc[idx, 'bet'] = j
df_loop.loc[idx, 'runs'] = k
Actual dataframe is about 4,600 rows.实际数据框约为 4,600 行。 But I plan on creating larger data sets to test my logic.
但我计划创建更大的数据集来测试我的逻辑。
You can try你可以试试
import itertools
out = df_loop.join(pd.DataFrame(itertools.product(*params.values()),columns= params.keys()))
I'm not sure what is the reason you initialize the dataframe with np.nan
.我不确定您使用
np.nan
初始化数据框的原因是什么。 However, in your code, you should first initialize the parameters in a new variable before assigning it to the dataframe.但是,在您的代码中,您应该首先在新变量中初始化参数,然后再将其分配给数据框。
my_param = [(i,j,k) for i in params['streak_game'] for j in params['initial_bet'] for k in params['run_diff_abs']]
Next, instead of using iterrows
, you can just use iloc
to do so.接下来,您可以使用
iloc
来代替使用iterrows
。
for i in range(len(df_loop)):
df_loop.iloc[i] = my_param[i]
Too many nested loops will just cause redundance in your code.太多的嵌套循环只会导致代码冗余。
This should work.这应该有效。
df_loop = pd.DataFrame(columns=['streak', 'bet', 'runs'])
params = {
'streak_game' : [3,4,5,6,7],
'initial_bet' : [50, 100, 150, 200, 250],
'run_diff_abs' : [x for x in range(150, 40,-10)]
}
list = []
count = 0
for i in params['streak_game']:
streak_game = i
for j in params['initial_bet']:
initial_bet = j
for k in params['run_diff_abs']:
run_diff = k
df2 = pd.DataFrame(data=[[i,j,k]],columns=['streak', 'bet', 'runs'])
df_loop = pd.concat([df_loop,df2])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.