首页 > 解决方案 > 使用 Python 3 中的“If”语句和其他列中的其他行来生成其他列的值

问题描述

问候,

如果这个问题似乎是重复的,请原谅我,但我找不到符合我确切要求的现有问题的答案:

我想使用其他列的行值来生成列的行值。为此,我制作了一个辅助函数“f”:

def f(row):    

    if row['column1'] == 3:
        val = 0

    if row['column2'] <= 5:
        if row['column3'] <= 4:
            if row['column4'] >= 3:
                val = 3        

    if row['column5'] == 2:
        val = 5 

    if row['column6'] == 0:
        if row['column7'] <= 0:
            if row['column8'] <= -1:
                val = 4

    else:
        val = 9

    return val

我将我的辅助函数应用于我的数据框,如下所示:

df['column12'] = df.apply(f, axis=1)

这产生了错误代码:

UnboundLocalError: ("局部变量 'val' 在赋值前被引用", '发生在索引 0')

我哪里错了?

标签: pythonpandasif-statement

解决方案


这两个 if 在输入一次后失败,因此您的 val 值永远不会被初始化,因此会出现错误。

if row['column2'] <= 5:
        if row['column3'] <= 4:
            if row['column4'] >= 3:
                val = 3      

if row['column6'] == 0:
        if row['column7'] <= 0:
            if row['column8'] <= -1:
                val 4

为了解决这个问题,在函数的开头声明和初始化 val 。


推荐阅读