我有pyspark数据框,其中两列的数据类型为
[('area','int'),('customer_play_id','int')]
+----+----------------+
|area|customer_play_id|
+----+----------------+
| 100| 8606738 |
| 110| 8601843 |
| 130| 8602984 |
+----+----------------+
我想使用pyspark命令将列区域强制转换为str,但是出现以下错误
我在下面尝试过
任何帮助将不胜感激 我想使用pyspark dataframe操作将区域的数据类型作为字符串
答案 0 :(得分:1)
您可以执行以下任何一项操作-
选项1:
df1 = df.select('*',df.area.cast("string"))
select
-在df1中想要的所有列都应在select中提及
选项2:
df1 = df.selectExpr("*","cast(area as string) AS new_area")
selectExpr
-在df1中需要的所有列均应在selectExpr中提及
选项3:
df1 = df.withColumn("new_area", df.area.cast("string"))
withColumn
将添加新列(除df的现有列之外)
select
和selectExpr
中的“ *”代表所有列。
答案 1 :(得分:1)
使用withColumn函数来更改spark中字段中的数据类型或值,例如显示如下:
import pyspark.sql.functions as F
df = df.withColumn("area",F.col("area").cast("string"))
答案 2 :(得分:1)
您可以使用此UDF函数
from pyspark.sql.types import FloatType
tofloatfunc = udf(lambda x: x,FloatType())
changedTypedf = df.withColumn("Column_name", df["Column_name"].cast(FloatType()))