背景:我有一个Python数据帧
目标:我正在尝试基于一系列现有列中的值创建一个新的字符串列。这需要多个'elif‘语句。
下面是我的(示例)代码,它出错了:
def rationale(row):
if row['Recommendation No. 1'] == 'Category_A':
result = []
result.append(row['First_Flag'])
result.append(row['Second_Flag'])
result.append(row['Third_Flag'])
result = ' '.join(result)
return result
elif row['Recommendation No. 1'] == 'Category_B':
result.append(row['Fourth_Flag'])
result.append(row['Fifth_Flag'])
result.append(row['Sixth_Flag'])
result.append(row['Seventh_Flag'])
result = ' '.join(result)
return result
elif row['Recommendation No. 1'] == 'Category_C':
result.append(row['Eigth_Flag'])
result.append(row['Ninth_Flag'])
result.append(row['Tenth_Flag'])
result.append(row['Eleventh_Flag'])
result = ' '.join(result)
return result
else:
return np.nan
df_top3_rationale['Recommendation No. 1 Rationale'] = df_top3_rationale.apply(rationale, axis=1) 这是我在'elif‘语句中得到的错误:
UnboundLocalError: ("local variable 'result' referenced before assignment", 'occurred at index 14854')任何帮助都是非常感谢的!
发布于 2017-07-16 06:05:58
问题是您只在第一个if块中定义了result,所以如果执行elif语句,它们就不能访问名为result的变量,这就是为什么错误指出变量result在赋值之前被引用(赋值在此行:result = [])。您应该做的是要么将result = []行放在条件语句之前,要么将它包含在每个if和elif块中。
https://stackoverflow.com/questions/45123025
复制相似问题