Python: ошибка типа: неупорядочиваемые типы: NoneType() < float(),

#apache-spark #typeerror

#apache-spark #ошибка типа

Вопрос:

У меня есть большой фрейм данных в pyspark с одним столбцом под названием distance_range, который выглядит следующим образом:

      --------------------- 
    |distance_range|
     --------------------- 
    |             6-10 mil|
    |              2-4 mil|
    |            10-15 mil|
    |            20-30 mil|
    |            15-20 mil|
    |              4-6 mil|
    |             6-10 mil|
    |            0.5-2 mil|
    |              2-4 mil|
    |              2-4 mil|
    |              4-6 mil|
    |            30-40 mil|
  

пока я хочу видеть различные значения этих столбцов и далее выполнять поворот с помощью этого столбца.

     df.select('distance_range').distinct().show()
  

это всегда возвращает ошибку:

      Py4JJavaError: An error occurred while calling o1884.showString.
     TypeError: unorderable types: NoneType() < float()
  

этот столбец имеет строковый тип и не имеет нулевого значения

этот столбец был сгенерирован

      def dist_range(distance):
         elif 0.5 <= distance <2:
                return '0.5-2 mil'
         elif  2 <= distance <4:
                return '2-4 mil'
                .
                .
                .
         elif 20 <= distance  <30:
               return '20-30 mil'
         else 30 <= distance  <40:
              return '30-40 mil'

    udf_distance_range = udf(dist_range, StringType())

    df = original_df.withColumn("distance_range", udf_distance_range("home_store_dist"))
  

Комментарии:

1. делали ли вы раньше что-нибудь вроде сортировки или orderby?

2. Без distinct() он вернет все значения distance_range, но если я захочу проверить различные значения, он вернет эту ошибку. Я не выполнял сортировку r orderby для этого метода distinct().

3. Мое первоначальное намерение состояло в том, чтобы выполнить поворот к этому столбцу distance_range после группировки по другим столбцам, но он также вернул эти ошибки. Затем я вернулся к проверке отдельного значения distance_range с помощью df.select(‘distance_range’).distinct().show(), он также возвращает эту ошибку.