pandas 将字符串转换为pyspark中的decimal(18,2)

mnemlml8  于 2023-09-29  发布在  Spark
关注(0)|答案(5)|浏览(123)

将字符串转换为十进制(18,2)

from pyspark.sql.types import *

DF1 = DF.withColumn("New_col", DF["New_col"].cast(DecimalType(12,2)))

display(DF1)

expected and actual O/P i see
需要帮助将字符串转换为十进制以将DF加载到数据库中。

tyg4sfes

tyg4sfes1#

你需要在造型前去掉逗号:

import pyspark.sql.functions as F

DF1 = DF.withColumn('New_col', F.regexp_replace('New_col', ',', '').cast('decimal(12,2)'))
f2uvfpb9

f2uvfpb92#

这对我来说很好:

from pyspark.sql.types import DecimalType

DF1 = DF.withColumn("New_col", DF["New_col"].cast(DecimalType(precision=12, scale=2)))
wfypjpf4

wfypjpf43#

from pyspark.sql.types import *
from pyspark.sql.functions import col
DF1=DF.withColumn("New_Col",col("New_Col").cast(DecimalType(18,2)))
sr4lhrrt

sr4lhrrt4#

你也可以直接这样做。

DF.withColumn("New_Col",col("New_Col").cast(decimal(18,2)))

假设上述DF为pyspark Dataframe

5f0d552i

5f0d552i5#

您可以像这样转换列的类型:

import pandas as pd
DF["New_col"] = pd.to_numeric(DF["New_col"])

相关问题