如何从字符串值中获取数字代码?

2024-04-26 23:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用导入了一个csv文件到spark中pyspark.sql并通过以下方式将其注册为临时表:

import pyspark
from pyspark.sql import SQLContext
sc = pyspark.SparkContext()
from pyspark.sql import HiveContext

sqlCtx= HiveContext(sc)
spark_df = sqlCtx.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("./data/geo_file.csv")
spark_df.registerTempTable("geo_table")

在“geo_table”表中,有一个名为“geo_location”的列,其值如下:

US>TX>618

US>NJ>241

US>NJ

我的问题是,如何将这些文本值转换为数值?在sql或pyspark.sql?在

在熊猫,我会这么做

^{pr2}$

Tags: csvfromimporttruedfsqltablespark
1条回答
网友
1楼 · 发布于 2024-04-26 23:28:35

在我看来,有几种方法可以解决你的问题。如果您只需要将“地理位置”列转换为数字列-可以使用UDF。您可以通过以下方式定义UDF(抱歉,Scala代码):

val toInt = udf[Int, String](str => {
   // convert your geo location string into integer using existing business logic
})

之后,您可以按以下方式使用此自定义项:

^{pr2}$

另外,我认为应该可以使用UserDefinedType作为列类型。不过,要看你用的是哪种版本的Spark。请看这个问题以获得更多信息:How to define schema for custom type in Spark SQL?

我希望你会发现这个信息有用。在

相关问题 更多 >