从字符串类型的 pyspark 数据框列中剥离数字
strip numbers from pyspark dataframe column of type string
我正在 pyspark 中处理数据框。我有数据框 df 和列 col_1 ,它是数组类型并且也包含数字。
是否有内置函数可以从这个字符串中删除数字?
数据框架构:
>>> df.printSchema()
root
|-- col_1: array (nullable = true)
| |-- element: string (containsNull = true)
列中的示例值:
>>>df.select("col_1").show(2,truncate=False)
+-------------------------------------------------------------------------------+
|col_1
+-------------------------------------------------------------------------------+
|[use, bal, trans, ck, pay, billor, trans, cc, balances, got, grat, thnxs] |
|[hello, like, farther, lower, apr, 11, 49, thank]|
+-------------------------------------------------------------------------------+
在这种情况下,我正在寻找将从第二行中删除数字 11、49 的函数。谢谢你。
这里有一些你可以尝试的东西 -
# Data preparation =>
data = [[['use', 'bal', 'trans', 'ck', 'pay', 'billor', 'trans', 'cc', 'balances', 'got', 'grat', 'thnxs']],
[['hello', 'like', 'farther', 'lower', 'apr', '11', '49', 'thank']]]
df = sc.parallelize(data).toDF(["arr"])
df.printSchema()
:
root
|-- arr: array (nullable = true)
| |-- element: string (containsNull = true)
:
from pyspark.sql.functions import explode,regexp_extract,col
df.select(explode(df.arr).alias('elements'))\
.select(regexp_extract('elements','\d+',0)\
.alias('Numbers'))\
.filter(col('Numbers') != '').show()
输出:
+-------+
|Numbers|
+-------+
| 11|
| 49|
+-------+
我正在 pyspark 中处理数据框。我有数据框 df 和列 col_1 ,它是数组类型并且也包含数字。
是否有内置函数可以从这个字符串中删除数字?
数据框架构:
>>> df.printSchema()
root
|-- col_1: array (nullable = true)
| |-- element: string (containsNull = true)
列中的示例值:
>>>df.select("col_1").show(2,truncate=False)
+-------------------------------------------------------------------------------+
|col_1
+-------------------------------------------------------------------------------+
|[use, bal, trans, ck, pay, billor, trans, cc, balances, got, grat, thnxs] |
|[hello, like, farther, lower, apr, 11, 49, thank]|
+-------------------------------------------------------------------------------+
在这种情况下,我正在寻找将从第二行中删除数字 11、49 的函数。谢谢你。
这里有一些你可以尝试的东西 -
# Data preparation =>
data = [[['use', 'bal', 'trans', 'ck', 'pay', 'billor', 'trans', 'cc', 'balances', 'got', 'grat', 'thnxs']],
[['hello', 'like', 'farther', 'lower', 'apr', '11', '49', 'thank']]]
df = sc.parallelize(data).toDF(["arr"])
df.printSchema()
:
root
|-- arr: array (nullable = true)
| |-- element: string (containsNull = true)
:
from pyspark.sql.functions import explode,regexp_extract,col
df.select(explode(df.arr).alias('elements'))\
.select(regexp_extract('elements','\d+',0)\
.alias('Numbers'))\
.filter(col('Numbers') != '').show()
输出:
+-------+
|Numbers|
+-------+
| 11|
| 49|
+-------+