无法访问名称中包含句点的 PySpark 列。在名字里

Cannot Access PySpark Column with Name that has a period . in the name

我正在尝试访问数据框列,但出现无法访问列的奇怪错误。

这是一个最小的工作示例:

tmp = spark.createDataFrame(["10","11","13"], "string").toDF("3p21.31")
display(tmp.select(col("3p21.31")))

但这给出了一个错误:

AnalysisException: cannot resolve '3p21.31' given input columns: [3p21.31];;

这似乎是矛盾的。

我也试过转义,tmp.select(col(3p21\.31))没用

如何访问其中包含 . 的列?

尝试使用原始字符串:

tmp = spark.createDataFrame(["10","11","13"], "string").toDF(r"3p21.31")
display(tmp.select(col("3p21.31")))

即使使用重音 ` 来包裹列的名称,它也应该可以工作,如下所示

tmp = spark.createDataFrame(["10","11","13"], "string").toDF("`3p21.31`")
display(tmp.select(col("`3p21.31`")))