如果语句正在运行但未处理

时间:2021-08-01 18:43:25

标签: python if-statement

我整个上午都在挠头,试图理解为什么以下内容似乎不起作用。这里的想法是,如果没有提供列,则运行一组代码,如果有,则运行另一组代码。

假设 df 的值只有 1 个值 = 'A'

def function_name(df, col):
    if col == None:
        df = df.str.lower()

    else:
        df[col] = df[col].str.lower()

function_name(df, None)

预期结果:'a' 当前结果:'A'

如果我要运行 function_name(df, 'A')

预期结果:'a' 当前结果:'a'

理想情况下,在运行该函数时,因为 None 被传入它应该返回我通过的任何命令,但目前,它表现得好像什么也没发生。当我通过打印进行调试时,我可以看到代码正在执行“东西”,但函数本身并没有导致运行任何命令。有什么想法吗?

2 个答案:

答案 0 :(得分:-1)

由于我无法发表评论,我将其作为答案发布。

df 充当两种数据类型,在 if 块中它不是数组,而在 else 块中它充当数组,所以请检查一下.您可以在第一个块中执行 df[0]

此外,您提到该函数没有返回任何内容,这是由于缺少 return 语句,因此,如果您打算返回新的 df,请在函数末尾添加 return df

答案 1 :(得分:-1)

比方说,您传递的 df 只包含 1 个值 = 'A'。所以,代码

def function_name(df, col):
    if col == None:
        df = str(df).lower()

    else:
        df[col] = str(df).lower()
    print(df)

function_name('A', None)

您在传递 a 时期望输出 'A',并且该函数不返回任何值。因此,我尝试打印 df 的值及其与预期输出的匹配。 .(dot) 运算符用于访问类、结构、联合成员,而 str 是一种数据类型,因此使用 df.str.lower() 会导致 AttributeError: type object 'str' has no attribute 'df'。我希望这个答案有帮助。