在 Spark Scala 中,如何检查数据框列中的字符串中有多少字符是大写的?
In Spark Scala, how to check how many characters in a string in a dataframe column are uppercase?
我在 Databricks 上使用 Spark Scala。我有一个带有一列的数据框,该列中的所有值都是字符串。我想创建另一列,其中包含原始列中大写字母的数量。一个例子是这样的:
val df = Seq(("Java",1), ("2000",0), ("python",0), ("ScAlA",3), ("AuguST/Car",4)).toDF("list", "qty_uppercase")
给出:
我不知道该怎么做。
我尝试使用以下命令拆分“列表”列中的字符串:
.withColumn("list_split", split($"list",""))
结果如下。但是后来我找不到正确的方法来遍历新列的每个字符。
例如,我已经尝试过其他问题中提到的方法,并使用 exists
创建一个列,但它不起作用:
>>> .withColumn("count", $"list".exists(_.isUpper))
>>> error: value exists is not a member of org.apache.spark.sql.ColumnName
.withColumn("qty", $"list".exists(_.isUpper))
一种方法是仅按 upper-case 个字母拆分并计算拆分次数:
val df = Seq(("Java",1), ("2000",0), ("python",0), ("ScAlA",3), ("AuguST/Car",4)).toDF("list", "qty_uppercase")
df.withColumn("count", size(split($"list", "[A-Z]")) - 1).show()
符合预期计数:
+----------+-------------+-----+
| list|qty_uppercase|count|
+----------+-------------+-----+
| Java| 1| 1|
| 2000| 0| 0|
| python| 0| 0|
| ScAlA| 3| 3|
|AuguST/Car| 4| 4|
+----------+-------------+-----+
我在 Databricks 上使用 Spark Scala。我有一个带有一列的数据框,该列中的所有值都是字符串。我想创建另一列,其中包含原始列中大写字母的数量。一个例子是这样的:
val df = Seq(("Java",1), ("2000",0), ("python",0), ("ScAlA",3), ("AuguST/Car",4)).toDF("list", "qty_uppercase")
给出:
我不知道该怎么做。
我尝试使用以下命令拆分“列表”列中的字符串:
.withColumn("list_split", split($"list",""))
结果如下。但是后来我找不到正确的方法来遍历新列的每个字符。
例如,我已经尝试过其他问题中提到的方法,并使用 exists
创建一个列,但它不起作用:
>>> .withColumn("count", $"list".exists(_.isUpper))
>>> error: value exists is not a member of org.apache.spark.sql.ColumnName
.withColumn("qty", $"list".exists(_.isUpper))
一种方法是仅按 upper-case 个字母拆分并计算拆分次数:
val df = Seq(("Java",1), ("2000",0), ("python",0), ("ScAlA",3), ("AuguST/Car",4)).toDF("list", "qty_uppercase")
df.withColumn("count", size(split($"list", "[A-Z]")) - 1).show()
符合预期计数:
+----------+-------------+-----+
| list|qty_uppercase|count|
+----------+-------------+-----+
| Java| 1| 1|
| 2000| 0| 0|
| python| 0| 0|
| ScAlA| 3| 3|
|AuguST/Car| 4| 4|
+----------+-------------+-----+