【发布时间】:2021-07-14 17:17:56
【问题描述】:
我有一个如下所示的 spark 数据框:
+----+------+-------------+
|user| level|value_pair |
+----+------+-------------+
| A | 25 |(23.52,25.12)|
| A | 6 |(0,0) |
| A | 2 |(11,12.12) |
| A | 32 |(17,16.12) |
| B | 22 |(19,57.12) |
| B | 42 |(10,3.2) |
| B | 43 |(32,21.0) |
| C | 33 |(12,0) |
| D | 32 |(265.21,19.2)|
| D | 62 |(57.12,50.12)|
| D | 32 |(75.12,57.12)|
| E | 63 |(0,0) |
+----+------+-------------+
如何提取value_pair 列中的值并将它们添加到两个名为value1 和value2 的新列中,使用逗号作为分隔符。
+----+------+-------------+-------+
|user| level|value1 |value2 |
+----+------+-------------+-------+
| A | 25 |23.52 |25.12 |
| A | 6 |0 |0 |
| A | 2 |11 |12.12 |
| A | 32 |17 |16.12 |
| B | 22 |19 |57.12 |
| B | 42 |10 |3.2 |
| B | 43 |32 |21.0 |
| C | 33 |12 |0 |
| D | 32 |265.21 |19.2 |
| D | 62 |57.12 |50.12 |
| D | 32 |75.12 |57.12 |
| E | 63 |0 |0 |
+----+------+-------------+-------+
我知道我可以像这样分隔值:
df = df.withColumn('value1', pyspark.sql.functions.split(df['value_pair'], ',')[0]
df = df.withColumn('value2', pyspark.sql.functions.split(df['value_pair'], ',')[1]
但是我怎样才能摆脱这些附庸呢?
【问题讨论】:
-
如果我没记错的话,this 的答案正是你所需要的。
-
差不多。如何删除括号?
-
@sampeterson 删除带有
regex_replace函数的括号,就像这个问题一样:stackoverflow.com/questions/37038014/…
标签: apache-spark pyspark apache-spark-sql