循环遍历不同名称的列

时间:2016-04-19 12:22:34

标签: python pandas

我正在尝试运行一个循环,我在其中执行合并。 在合并的每个阶段,我使用新的后缀创建变量。在第一阶段之后,我有VARIABLE_1和VARIABLE_2。第二次合并VARIABLE_1,VARIABLE_2和VARIABLE_3之后。等等 现在我需要在每个阶段的最后两个重命名和执行操作。 因此,在第一次合并后,我需要重命名VARIABLE_1和VARIABLE_2 在第二阶段,我需要重命名VARIABLE_2和VARIABLE_3等

对我来说似乎合乎逻辑的是按如下方式运行合并:

 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

这是df

dforig仍然看起来像:

ID   VARIABLE

问题是:' VARIABLE_count'不是对列的有效引用。 是否有一种正确的方法来调用名称根据循环的迭代而改变的列

1 个答案:

答案 0 :(得分:1)

我认为您可以在merge中使用参数on,然后从变量'移除count,然后将int转换为str

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