for i in range(metrics2.meanAbsoluteError):
TypeError: объект 'float' не может интерпретироваться как целое число p>
Я преобразовал два столбца (max_FPIWX_obs и max_fpiwx) в двойной тип и получил эту ошибку. После поиска stackoverflow я обнаружил, что диапазон не может принимать значение с плавающей запятой; поэтому, когда я делаю следующее: for i in range(int(metrics2.meanAbsoluteError)), я получаю: [CANNOT_INFER_SCHEMA_FOR_TYPE] Невозможно вывести схему для типа: int.
Я также попытался изменить оба двойных типа на целочисленные после округления (см. закомментированный код). но получаю еще одну ошибку [CANNOT_INFER_SCHEMA_FOR_TYPE]: «DoubleType() не может принять объект '3' в типе 'int'. Данные из обоих столбцов изначально не содержат плавающих символов и нулевых значений. Есть идеи? Пожалуйста, посмотрите на скриншоты ошибки. Спасибо. !!
Код: Выделить всё
ctx, metrics, mae_output
):
metrics = metrics.dataframe()
metrics = metrics.filter(metrics.max_fpiwx != -999)
metrics = metrics.fillna( { 'max_FPIWX_obs':0, 'max_fpiwx':0 } )
metrics = metrics.withColumn("max_FPIWX_obs",metrics.max_FPIWX_obs.cast(T.DoubleType()))
# metrics = metrics.withColumn("max_FPIWX_obs", F.round(metrics.max_FPIWX_obs))
# metrics = metrics.withColumn("max_FPIWX_obs",metrics.max_FPIWX_obs.cast(T.IntegerType()))
# metrics = metrics.withColumn("max_fpiwx", F.round(metrics.max_FPIWX_obs))
# metrics = metrics.withColumn("max_fpiwx",metrics.max_FPIWX_obs.cast(T.IntegerType()))
metrics = metrics.withColumn("row_id", F.monotonically_increasing_id())
mae_values = metrics.select(F.col('max_fpiwx'), F.col('max_FPIWX_obs'))
mae_values_rdd_new = mae_values.rdd.map(tuple)
metrics2 = RegressionMetrics(mae_values_rdd_new)
MAE_output = []
for i in range(metrics2.meanAbsoluteError):
MAE_output.append(i)
MAE_df = ctx.spark_session.createDataFrame(data=MAE_output, schema = ["MAE_metrics"])
MAE_df = MAE_df.withColumn("row_id", F.monotonically_increasing_id())
MAE_df_final = metrics.join(MAE_df, ("row_id")).drop("row_id")
mae_output.write_dataframe(MAE_df)



Подробнее здесь: https://stackoverflow.com/questions/790 ... pe-errrors