2016-04-19 12 views
1

Ich versuche, eine Schleife auszuführen, in der ich eine Zusammenführung durchführen. In jeder Phase der Zusammenführung erzeuge ich Variablen mit neuen Suffixen. Nach der ersten Stufe habe ich VARIABLE_1 und VARIABLE_2. Nach der zweiten Zusammenführung VARIABLE_1, VARIABLE_2 und VARIABLE_3. usw. Jetzt muss ich umbenennen und Operationen auf den letzten beiden in jeder Phase durchführen. So nach dem ersten Zusammenführung muss ich VARIABLE_1 und Variable_2 Auf der zweiten Stufe müssen umbenennen ich Variable_2 und VARIABLE_3 etcSchleife über Spalten mit unterschiedlichen Namen

Was schien logisch mir benennen ist die Zusammenführung laufen wie folgt:

for count in range(1,200): 
     df=pd.merge(df, dforig, left_on=['ID'], right_on=['ID'], suffixes=('count', 'count+1'),copy=True, how='left') 
     df=df.rename(columns={'VARIABLE_count':'VARIABLE_count-2', 'VARIABLE_count+1':'VARIABLE'}) 

Vor der ersten Zusammenführung df = dforig Nach der ersten Zusammenführung df ist der neue Datensatz dforig immer noch der ursprüngliche Datensatz.

So nach dem ersten Fusions-Zustand habe ich jetzt:

ID  VARIABLE_1   VARIABLE_2 
    x   y     z 

und dies sollte sich:

ID  VARIABLE_-1   VARIABLE 
    x   y     z 

Dies ist df

dforig noch wie folgt aussieht:

ID VARIABLE 

Problem ist: ' VARIABLE_count 'ist kein gültiger Verweis auf eine Spalte. Gibt es eine richtige Art und Weise Spalten zu nennen, wo der Name auf der Iteration der Schleife

Antwort

1

Ich denke, können Sie Parameter on in merge, dann entfernen ' von Variablen count abhängig ändert und vor concanecate int zu str Stimmen:

for count in range(1,200): 
    df=pd.merge(df, dforig, on='ID', suffixes=(count, count+1), copy=True, how='left') 
    df=df.rename(columns={'VARIABLE'+str(count):'VARIABLE' + str(count-2), 
          'VARIABLE'+str(count+1):'VARIABLE'}) 
Verwandte Themen