python - 循环具有不同名称的列

标签 python pandas

我正在尝试运行一个执行合并的循环。 在合并的每个阶段,我都会创建带有新后缀的变量。第一阶段之后,我有 VARIABLE_1 和 VARIABLE_2。第二次合并 VARIABLE_1、VARIABLE_2 和 VARIABLE_3 后。 ETC 现在我需要在每个阶段对最后两个进行重命名和执行操作。 因此,在第一次合并后,我需要重命名 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”不是对列的有效引用。 是否有正确的方法来调用名称根据循环迭代而变化的列

最佳答案

我认为您可以在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'})

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

相关文章:

python - 使用正则表达式过滤 pandas

python - 生成具有数字范围的条件组合的数据框

python - 如何在 python 中定义/格式化日期和时间

python - 我如何解决 'UserWarning: DataFrame columns are not unique, some columns will be omitted' ?

python - 无法从 Python 中的 Appkit 导入 NSWorkspace

python - Pandas 日期时间表示的转换

python - 如果在 python/bash 中包含来自另一个 .txt 文件的单词,则从文件中删除行

python - 从 ndarray 继承调用 __getitem__

python - 让图例对应于 Pandas/PyPlot 中的 y 值

python - 如何拆分元组并将其保存到数据框