首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:使用函数通过多条Elif语句在Dataframe中创建新的字符串列

Python:使用函数通过多条Elif语句在Dataframe中创建新的字符串列
EN

Stack Overflow用户
提问于 2017-07-16 05:49:57
回答 1查看 51关注 0票数 1

背景:我有一个Python数据帧

目标:我正在尝试基于一系列现有列中的值创建一个新的字符串列。这需要多个'elif‘语句。

下面是我的(示例)代码,它出错了:

代码语言:javascript
复制
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‘语句中得到的错误:

代码语言:javascript
复制
UnboundLocalError: ("local variable 'result' referenced before assignment", 'occurred at index 14854')

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2017-07-16 06:05:58

问题是您只在第一个if块中定义了result,所以如果执行elif语句,它们就不能访问名为result的变量,这就是为什么错误指出变量result在赋值之前被引用(赋值在此行:result = [])。您应该做的是要么将result = []行放在条件语句之前,要么将它包含在每个ifelif块中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45123025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档