将for循环中的变量用作数据帧列名

时间:2018-06-05 08:38:30

标签: python pandas loops for-loop series

我试图使用for循环迭代列名列表,并在每次迭代时根据字符串前缀和原始列名(存储在列表中)创建一个新列。问题是数据框认为变量是

时框架中的一个系列
cols_to_transform = ['Price','Km_From_CBD','Local_Median_Price', 'AreaSize']

for x in cols_to_transform:
    df.x #This is where the problem
    df[x] = df[x>1]
    newcolname = ('T1_Pre_'+ x)
    df.newcolname = df.x + 1 #and same problem here 

(DataFrame'对象没有属性' x')

(DataFrame'对象没有属性' newcolname')

理想情况下,我会有一个"全局变量"或覆盖预期的pandas对象的参数,并将变量的内容作为列名而不是变量本身。

除了创建列之外,我不能使用pandas apply我需要创建一系列显示转换变化的子图。

我知道我可以将整行代码强制转换为字符串,然后使用exec,但我真的很喜欢这样做,因为它感觉就像是一种廉价的工作。

提前致谢! 这也是我的第一个问题,对我很轻松:)

1 个答案:

答案 0 :(得分:0)

试试这段代码:

cols_to_transform = ['Price','Km_From_CBD','Local_Median_Price', 'AreaSize']

for x in cols_to_transform:
    df[x]

    newcolname = ('T1_Pre_'+ x)
    df.newcolname = df[x] + 1