我正在使用的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”。
不确定我在做什么错吗?
答案 0 :(得分:1)
r
是一个字符串,您正尝试将其作为变量传递。
您需要将函数更改为hangecolumnnames(zillrentyears, "r")
,然后在函数内部可以调用returnlist.append(i + x)
,而无需使用str
。