Der folgende Code generiert die gewünschte Ausgabe in ONE Datenrahmen, jedoch möchte ich dynamisch Datenrahmen in einer FOR-Schleife erstellen und dann den verschobenen Wert diesem Datenrahmen zuweisen. Beispiel, Datenrahmen df_lag_12 würde nur column1_t12 und column2_12 enthalten. Irgendwelche Ideen würden sehr geschätzt werden. Ich habe versucht, dynamisch mit der EXEC-Anweisung 12 Datenrahmen zu erstellen, die Google-Suche scheint dies als schlechte Praxis zu bezeichnen.Python Pandas Dynamisch Erstellen eines Datenrahmens
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()')
gewünschte Ausgabe für dymanically Datenrahmen DF_LAGS_12 erstellt:
var_list=['column1_t12','column2_t12']
df_lags_12=df_lags[var_list]
print(df_lags_12)
Diese vielversprechend aussieht, wäre es möglich, diese dynamisch zuweisen zu Datenrahmen 1-12 obwohl? – Kyle
meinst du 'df1',' df10'? Es ist möglich, aber schlechte Übung. – jezrael
Okay, jetzt sehe ich, was Sie tun, ich wusste nicht, dass ein Wörterbuch Datenframes enthalten könnte ... Also habe ich Ihre empfohlene Version implementiert über: d_df = {} für col in model_data.drop (['usrec'], axis = 1) .spalten: für i im Bereich (12,0, -1): d_df ['t' + str (i)] = Modelldaten [col] .shift (i) .add_suffix ('_ t' + str (i)). to_frame() Allerdings wird nur die letzte Spalte der 2300 oder so Spalten im ursprünglichen Datenrahmen beibehalten, ich weiß von der append-Funktion, aber unsicher, ob das hier funktionieren würde, irgendwelche Ideen? – Kyle