我有一个这样的数据框:
+------+---+
| Name|Age|
+------+---+
|A-2 | 26|
|B-1 | 30|
|C-3 | 20|
+------+---+
scala> p.select("Name", "Age")
res2: org.apache.spark.sql.DataFrame = [Name: string, Age: string]
在这里我们可以清楚地看到列中的数据为String
我想用类似Name
的方法转换split("-")
列,以仅获取它的第一部分(即A,B,C)。
但是在spark中键入Column
并没有这种方法,所以我在考虑如何在Column中获取'string'以便执行split
操作。
有人知道我应该怎么做吗?
答案 0 :(得分:1)
使用functions.split方法
df.select(split(col("Name"), "-").getItem(0))
答案 1 :(得分:1)
分割功能可用于spark数据框。请参见下面的示例。
//Creating Test Data
val df = Seq(("A-2", 26)
, ("B-1", 30)
, ("C-3", 20)
).toDF("name", "age")
df.withColumn("new_name", split(col("name"),"-")(0)).show(false)
+----+---+--------+
|name|age|new_name|
+----+---+--------+
|A-2 |26 |A |
|B-1 |30 |B |
|C-3 |20 |C |
+----+---+--------+