名称错误:使用函数时未定义名称“ x”

时间:2019-07-16 07:22:38

标签: python

我正在使用的3个数据框具有相同的列名称,并且正在合并它们。第一列是我想要的数据框。其余的列是年份,我想在每一年中添加一个字母以区分数据框。我能够手动完成此操作,而没有任何问题。但是当我尝试定义一个函数时,出现以下错误

  

NameError:未定义名称'x'。

这是我最初的尝试,没有定义函数。 dfyears是我尝试更改列名称的数据框。第一列“ City_State”,我想保持不变,其余的我想根据数据帧在后面加一个字母。

dfyearlist = (dfyears.columns[1:].values.tolist())
dfcols = [(dfyears.columns[0])]
for i in dfyearlist:
    dfcols.append(i + 'r')
dfyears.columns = dfcols

这是我的输出的前三行:

        City_State        2010r        2011r        2012r        2013r  \
0     New York, NY  1771.666667  1753.384615  1803.615385  1955.384615   
1  Los Angeles, CA  2190.333333  2185.076923  2185.000000  2242.692308   
2      Houston, TX  1198.666667  1195.538462  1197.846154  1252.692308   

         2014r        2015r        2016r        2017r        2018r  
0  2124.000000  2271.230769  2331.846154  2337.384615  2295.846154  
1  2331.384615  2522.692308  2687.000000  2798.307692  2883.153846  
2  1322.076923  1411.461538  1439.461538  1423.615385  1432.923077  

但是当我尝试定义一个函数时:

def changecolumnnames(s, x):
    templist = [s.columns[1:].values.tolist()]
    returnlist = [(s.columns[0])]
    for i in templist:
        returnlist.append(i + str(x))
    s.columns = returnlist 

zillrentyears = changecolumnnames(zillrentyears, r)

我得到:

  

NameError:未定义名称“ r”。

不确定我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

r是一个字符串,您正尝试将其作为变量传递。

您需要将函数更改为hangecolumnnames(zillrentyears, "r"),然后在函数内部可以调用returnlist.append(i + x),而无需使用str