我在一栏中有以下数据| 值|| --|| 1.873452634567E7 || null|| 1.87345265634544467E9 || 1.8734526563456347E10 || 1.8734526563456723E8 |我试
df.withColumn("s", 'value.cast("Decimal(14,4)"))
但这并没有帮助。
wdebmtf21#
如果你先施放浮动,然后施放Decadition,你会得到你需要的。
from pyspark.sql import SparkSessionfrom pyspark.sql.functions import col# Create a Spark sessionspark = SparkSession.builder.appName("ScientificToDecimal").getOrCreate()# Sample datadata = [("1.873452634567E7",), (None,), ("1.87345265634544467E9",), ("1.8734526563456347E10",), ("1.8734526563456723E8",)]# Define schema and create a DataFramecolumns = ["value"]df = spark.createDataFrame(data, columns)# Convert to float first, then to decimaldf = df.withColumn("value_float", col("value").cast("float"))df = df.withColumn("value_decimal", col("value_float").cast("Decimal(38,4)"))# Show resultsdf.show()
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
# Create a Spark session
spark = SparkSession.builder.appName("ScientificToDecimal").getOrCreate()
# Sample data
data = [("1.873452634567E7",),
(None,),
("1.87345265634544467E9",),
("1.8734526563456347E10",),
("1.8734526563456723E8",)]
# Define schema and create a DataFrame
columns = ["value"]
df = spark.createDataFrame(data, columns)
# Convert to float first, then to decimal
df = df.withColumn("value_float", col("value").cast("float"))
df = df.withColumn("value_decimal", col("value_float").cast("Decimal(38,4)"))
# Show results
df.show()
1条答案
按热度按时间wdebmtf21#
如果你先施放浮动,然后施放Decadition,你会得到你需要的。