2016-04-19 6 views
1

ループを実行して、マージを実行しようとしています。 マージの各段階で、新しい接尾辞付きの変数を作成します。最初の段階の後、私はVARIABLE_1とVARIABLE_2を持っています。 2番目のマージ後にVARIABLE_1、VARIABLE_2、およびVARIABLE_3をマージします。等 今私は名前を変更し、各段階で最後の2つの操作を実行する必要があります。 だから最初のマージの後、私は私が私には論理的に思えた何VARIABLE_2とVARIABLE_3など異なる名前の列をループする

の名前を変更する必要がある2段目のVARIABLE_1とVARIABLE_2 の名前を変更する必要があり、次のようにマージを実行することです:

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'}) 

最初のマージの前df = dforig 最初のマージdfが新しいデータセットの後 dforigは依然として元のデータセットです。

ID  VARIABLE_1   VARIABLE_2 
    x   y     z 

を、これはなるはずです::

だから、最初のマージ状態の後、私は今持っている

ID  VARIABLE_-1   VARIABLE 
    x   y     z 

です

dforigはまだのように見えるdfを:

ID VARIABLE 

問題は次のとおりです: ' VARIABLE_count 'は列に対する有効な参照ではありません。 concanecateがstrintをキャストし、前に名前が

答えて

1

は、私はあなたがmergeでパラメータonを使用することができると思うループの繰り返しに依存して変化した列を呼び出すための適切な方法、そしてcount変数から'を削除あり:

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'}) 
関連する問題