Сопоставьте имя месяца с номером месяца в блоках данных Azure с помощью scala

Необходимо сопоставить имя месяца с номером месяца в блоках данных Azure с помощью scala. У меня есть имя столбца PERIOD, в котором есть такие данные, как название месяца (например, январь, февраль, март, ...., ноябрь, декабрь), я хочу заменить это имя месяца на номер месяца (например, 01,02,03,..., 11 ,12). Результат должен быть похож на январь, февраль, март,.., ноябрь, декабрь, замененный на 01,02,03,...,11,12.

      "Jan"  -> 01,
      "Feb"  -> 02,
      "Mar"  -> 03,
      "Apr"  -> 04,
      "May"  -> 05,
      "Jun"  -> 06,
      "Jul"  -> 07,
      "Aug"  -> 08,
      "Sep"  -> 09,
      "Oct"  -> 10,
      "Nov"  -> 11,
      "Dec"  -> 12

Я новичок в scala и azure databricks. Я попробовал картографический подход, но не получил желаемого решения. введите здесь описание изображения

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  • Теперь, чтобы преобразовать этот месяц словами в номер месяца, сначала я создал карту, где ключ — это название месяца, а значение — это номер месяца в виде строки (поскольку нам нужен номер месяца как 01, а не 1).
val monthNumber = Map(
      "Jan" -> "01",
      "Feb" -> "02",
      "Mar" -> "03",
      "Apr" -> "04",
      "May" -> "05",
      "Jun" -> "06",
      "Jul" -> "07",
      "Aug" -> "08",
      "Sep" -> "09",
      "Oct" -> "10",
      "Nov" -> "11",
      "Dec" -> "12"
  )
  • Теперь вы можете использовать следующий код для преобразования названия месяца в номер месяца:
var final_df = df.rdd.map(f => {
    val number = monthNumber(f.getString(0))
    (f.getString(0),number)
}).toDF("month_in_words","month_in_number")
//display(df)

  • Для прямого преобразования вы можете использовать следующий код:
var final_df = df.rdd.map(f => monthNumber(f.getString(0))).toDF("month_in_number")
//display(final_df)

Вам не нужно использовать .rdd после df; по крайней мере в scala spark. также искра неизменяема, так что просто определите val хорошо. так оно и есть val final_df = df.map(f => { val number = monthNumber(f.getString(0)) (f.getString(0),number) }).toDF("month_in_words","month_in_number")

soMuchToLearnAndShare 20.11.2022 00:08

Другие вопросы по теме