我正在尝试运行一个执行合并的循环。
在合并的每个阶段,我都会创建带有新后缀的变量。在第一阶段之后,我有了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”不是对列的有效引用。
是否有适当的方法来调用名称随列的迭代而变化的列

最佳答案

我认为您可以在on中使用参数merge,然后将'从变量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'})

关于python - 循环使用不同名称的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36718264/

10-12 18:15