Ahalya, я думаю, вы можете добиться этого, преобразовав вес в float из десятичного
для [{'Name': 'John','Weight': 0.0, '_id': '0010z00001aZa0RAAS'}]
вот пример кода:
from pyspark.sql.functions import col
df = ...
df = df.withColumn("weight", col("weight").cast("float"))
df_dict = list(map(lambda row: row.asDict(), df.collect()))
вместо этого вы получите 0,0 of Decimal (0,0)
EDIT 1: если вам нужно проверить десятичные столбцы и динамически преобразовать их:
column_schema = df.dtypes
for cols in column_schema:
if 'decimal' in cols[1]:
df = df.withColumn(cols[0], col(cols[0]).cast("float"))
Объяснение: в columns_schema вы собираете имя_столбца, тип данных как список ( кортеж (столбец, тип данных)) из фрейма данных. Позже вы l oop dataframe с column_schema и приведете столбцы, которые имеют тип данных decimal (0,0), в float.
Я согласен, что это грубый способ сделать, но я просто предлагаю вам подход , вы можете улучшить это. Надеюсь, это поможет!