下面的代码将在一个数据帧中生成所需的输出,但是,我想在FOR循环中动态创建数据帧,然后将移位的值分配给该数据帧.例如,数据框df_lag_12只包含column1_t12和column2_12.任何想法将不胜感激.我试图使用EXEC语句动态创建12个数据帧,谷歌搜索似乎表明这是不好的做法.
import pandas as pd
list1=list(range(0,20))
list2=list(range(19,-1,-1))
d={'column1':list(range(0,20)),
'column2':list(range(19,-1,-1))}
df=pd.DataFrame(d)
df_lags=pd.DataFrame()
for col in df.columns:
for i in range(12,0,-1):
df_lags[col+'_t'+str(i)]=df[col].shift(i)
df_lags[col]=df[col].values
print(df_lags)
for df in (range(12,0,-1)):
exec('model_data_lag_'+str(df)+'=pd.DataFrame()')
Run Code Online (Sandbox Code Playgroud)
dymanically创建的数据帧DF_LAGS_12的所需输出:
var_list=['column1_t12','column2_t12']
df_lags_12=df_lags[var_list]
print(df_lags_12)
Run Code Online (Sandbox Code Playgroud) 我想执行以下操作:给定观察总数(在本例中为变量'total_models'),我想通过给定数量的python会话解析这个并行处理('sessions'变量和'by'变量).我认为最好使用字典来执行此任务.
可以在'obs_dict'对象中找到所需的结果.对于'total_models','sessions'和'by'的任何给定输入.你能协助在字典对象中创建所需的输出吗?如果可能的话,我希望使用某种列表或字典理解来看到答案.
total_models=1000000
sessions=4
by=int(total_models/sessions)
### Desired Output.
obs_dict={1:'0:250000',2:'250001:500000',3:'500001:750000',4:'750001:1000000'}
Run Code Online (Sandbox Code Playgroud)