python - 属性错误 : 'NoneType' object has no attribute 'upper'

标签 python apache-spark pyspark user-defined-functions nonetype

<分区>

我有一个 PySpark Dataframe (df) 并试图添加一个列 (capital_names),该列将是一个现有列 (names),名称已转换为大写字母。我是这样做的:

def capital(text):
    return text.upper()

udf_capital = udf(capital,StringType())

df2 = df.withColumn("capital_names",udf_capital("names"))

df2.show()

运行代码时,当我尝试显示生成的数据帧时出现错误:

AttributeError: 'NoneType' object has no attribute 'upper'

但是,我已经检查了我的数据框的模式并且“名称”列是 StringType,我该如何解决这个问题? 提前致谢!

最佳答案

列中有空值。尝试在 UDF 中添加检查以捕获它。

def capital(text):
    if text is not None:
        return text.upper()
    else:
        return None

关于python - 属性错误 : 'NoneType' object has no attribute 'upper' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65580018/

相关文章:

python - 在 Python 中动态改变范围?

python - git 存储库数据结构是否使用规范编码?

apache-spark - 与RDD相比,DataSet的性能优势

mongodb - PySpark MongoDB::java.lang.NoClassDefFoundError:com/mongodb/client/model/Collat​​ion

python - 如何在 Pyspark 中使用 Scala 类

apache-spark - Pyspark 在 yarn 集群模式下将文件写入本地

python - 在 python 日志记录中使用 dictConfig,需要使用与 dict 中定义的文件不同的文件创建记录器。

Udacity 上的 Python 示例坏了?

regex - 删除字符串中单个字符之间的空格

python - pyspark 分组映射 IllegalArgumentException 错误