如何使用pyspark捕获 Dataframe 中缺少名称的列?

20jt8wwn  于 9个月前  发布在  Spark
关注(0)|答案(1)|浏览(83)

我正在构建一个pyspark python notebook。我需要动态传递条件来创建新的dataframe列。此条件可以包括来自同一dataframe的一个或多个其他列。然而,有时列可能不存在于 Dataframe 中。然后,我收到以下错误。我想捕获并存储丢失的列。在下面的例子中,我想捕获'col 1'。
因为我传递的是动态表达式,所以我不知道前面的列的名称。
您访问的页面不存在!
如果我可以只捕获列名,我就可以创建空列并重新处理它。
我找不到关于捕捉这个的资源。任何一个都有一个代码来捕获丢失的列名。
我尝试使用try catch异常。

4nkexdtk

4nkexdtk1#

我们可以在这里使用try + except来捕获所有异常并获取 * 缺少的列名 *。

Example:

import re
df = spark.createDataFrame([(1, 'Mary had a little lamb')],['Number','Keywords'])
df.printSchema()
try:
  df.select("col1").show()
except Exception as err:
  missing_col = re.findall(r"name (.*)\s+cannot be resolved", str(err).replace("\n",""))
  print(missing_col)
  #['`col1`']

在这个例子中,我们可以看到col1不存在,我们正在使用re模块**(Python的正则表达式)**捕获列名

相关问题