You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Databricks中用islower()判断列名小写的PySpark代码报错排查

修正PySpark新增列时的语法错误

现有数据处理逻辑

在Azure Databricks中使用PySpark处理数据的现有代码如下:

df2 = spark.sql(f" SELECT tbl_name, column_name, data_type, current_count FROM {database_name}.{tablename}")

query_df = spark.sql(f"SELECT tbl_name, COUNT(column_name) as `num_cols` FROM {database_name}.{tablename} GROUP BY tbl_name")            

df_join = df2.join(query_df,['tbl_name'])  

问题描述

需要为df_join新增column_case_lower列,用于判断column_name是否全小写,编写的代码运行时报错unexpected EOF while parsing,错误代码如下:

df_join.withColumn("column_case_lower",
        when((col("column_name").islower()) == 'true'.otherwise('false'))

错误原因及修正方案

错误点分析

  1. 语法结构错误:.otherwise()方法调用位置错误,误写在字符串'true'之后,导致代码解析时提前结束;
  2. 冗余比较:col("column_name").islower()本身返回布尔类型值,无需与字符串'true'做相等判断。

修正后的代码

方法一:使用when-otherwise

from pyspark.sql.functions import col, when

# 生成包含新列的DataFrame
df_result = df_join.withColumn(
    "column_case_lower",
    when(col("column_name").islower(), "true").otherwise("false")
)

方法二:直接转换布尔值为字符串(更简洁)

from pyspark.sql.functions import col

# 直接将布尔结果转为字符串类型
df_result = df_join.withColumn(
    "column_case_lower",
    col("column_name").islower().cast("string")
)

以上两种写法都能正确生成预期的column_case_lower列,返回true或false字符串值。

内容的提问来源于stack exchange,提问作者Ninoshka Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:00:57