Как преобразовать числовые значения в категориальную переменную с помощью pyspark

фрейм данных pyspark, который имеет ряд числовых переменных.

для например

мой фрейм данных имеет значение столбца от 1 до 100.

1-10 - group1<== значение столбца от 1 до 10 должно содержать group1 в качестве значения 11-20 - 2 группа . . . 91-100 группа10

как я могу добиться этого, используя pyspark dataframe

Привет, добро пожаловать в stackoverflow. Пожалуйста, дайте нам воспроизводимый пример и покажите нам желаемый результат.

cronoik 10.04.2019 14:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
599
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
# Creating an arbitrary DataFrame
df = spark.createDataFrame([(1,54),(2,7),(3,72),(4,99)], ['ID','Var'])
df.show()
+---+---+
| ID|Var|
+---+---+
|  1| 54|
|  2|  7|
|  3| 72|
|  4| 99|
+---+---+

После создания DataFrame мы используем функцию floor(), чтобы найти целую часть числа. Например; floor(15.5) будет 15. Нам нужно найти целую часть Var/10 и добавить к ней 1, потому что индексация начинается с 1, а не с 0. Наконец, нам нужно добавить group к значению. Конкатенация может быть достигнута с помощью функции concat(), но имейте в виду, что, поскольку предваряемое слово group не является столбцом, поэтому нам нужно поместить его внутрь lit(), что создает столбец с литеральным значением.

# Requisite packages needed
from pyspark.sql.functions import col, floor, lit, concat
df = df.withColumn('Var',concat(lit('group'),(1+floor(col('Var')/10))))
df.show()
+---+-------+
| ID|    Var|
+---+-------+
|  1| group6|
|  2| group1|
|  3| group8|
|  4|group10|
+---+-------+

Спасибо за ваш вклад.

Aravindan Tk 10.04.2019 15:08

Вы также можете заменить 1+floor функцией ceil, в любом случае отметьте это как ответ, если это решило вашу проблему.

sramalingam24 10.04.2019 16:40

@sramalingam24 ха-ха, в спешке чуть не забыл. Спасибо за замечание :)

cph_sto 10.04.2019 18:50

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