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

фрейм данных pyspark с диапазоном числовых переменных.

, например,

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

1-10 - group1 <== значение столбца от 1 до 10 должно содержать group1 как значение 11-20 - group2.,,91-100 group10 </p>

как я могу добиться этого с помощью pyspark dataframe

1 Ответ

0 голосов
/ 10 апреля 2019
# 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|
+---+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...