Ano*_*ous 1 python field dataset capitalize pyspark
我需要清理几个字段:物种/描述通常是简单的大写,其中第一个字母大写。PySpark 只有 upper、lower 和 initcap(每个单词都大写),这不是我想要的。https://spark.apache.org/docs/2.0.1/api/python/_modules/pyspark/sql/functions.html
Python 有一个原生的 Capitalize() 函数,我一直在尝试使用它,但总是收到对列的错误调用。
fields_to_cap = ['species', 'description']
for col_name in fields_to_cap:
df = df.withColumn(col_name, df[col_name].captilize())
Run Code Online (Sandbox Code Playgroud)
有没有办法轻松地利用这些字段?
需要明确的是,我正在尝试将字段中的数据大写。这是一个例子:
当前:“这是一个描述。”
预期:“这是一个描述。”
wwn*_*nde 11
使用initcap
data = [
(1001, 'jana', 'yes'),
(1001, 'Jleo', 'no')
]
df = spark.createDataFrame(data, ['SID','species', 'description']).show()
+----+-------+-----------+
| SID|species|description|
+----+-------+-----------+
|1001| jana| yes|
|1001| Jleo| no|
+----+-------+-----------+
from pyspark.sql.functions import *
df.withColumn("species", initcap(col('species'))).withColumn("description", initcap(col('description'))).show()
+----+-------+-----------+
| SID|species|description|
+----+-------+-----------+
|1001| Jana| Yes|
|1001| Jleo| No|
+----+-------+-----------+
Run Code Online (Sandbox Code Playgroud)
您可以使用解决方法,将第一个字母和其余字母分开,使第一个字母大写,其余字母小写,然后将它们连接回来
import pyspark.sql.functions as F
df = spark.createDataFrame([[1, 'rush HouR'],
[2, 'kung-Fu Panda'],
[3, 'titaniC'],
[4, 'the Sixth sense']], schema="id int, title string")
df = df.withColumn('title_capitalize', F.concat(F.upper(F.expr("substring(title, 1, 1)")),
F.lower(F.expr("substring(title, 2)"))))
df.show()
+---+---------------+----------------+
| id| title|title_capitalize|
+---+---------------+----------------+
| 1| rush HouR| Rush hour|
| 2| kung-Fu Panda| Kung-fu panda|
| 3| titaniC| Titanic|
| 4|the Sixth sense| The sixth sense|
+---+---------------+----------------+
Run Code Online (Sandbox Code Playgroud)
或者如果你想坚持使用Python,你可以使用UDF.capitalize()
from pyspark.sql.types import StringType
udf_capitalize = F.udf(lambda x: str(x).capitalize(), StringType())
df = df.withColumn('title_capitalize', udf_capitalize('title'))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13313 次 |
最近记录: |