Я хочу применить некоторые функции к столбцам pysaprk dataframe, удастся это сделать с помощью UDF, но я хочу, чтобы возвращение было другим объектом, отличным от столбца dataframe, pandas dataframe, списка python,и т. д.
Я использую классификатор для разделения каждого столбца на классы, но я хочу, чтобы результат представлял собой сводку классов, а не модификацию фрейма данных pyspark, я не знаю, возможно ли это с помощью UDF
Мой код выглядит следующим образом
import numpy as np
import pandas as pd
import pyspark
from pyspark.sql import SQLContext
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType, StringType, FloatType, DoubleType
sc = pyspark.SparkContext()
sqlCtx = SQLContext(sc)
df_pd = pd.DataFrame(
data={ 'Income':[12.0,45.0,24.0,24.0,54.0],
'Debt':[23.0,4.0,1.0,6.0,3.0]} )
df = sqlCtx.createDataFrame(df_pd)
# function
def clase(x):
#n = np.mean(df_pd[name])
#n = np.mean(df_pd["Ingresos"])
n = 30
m = 20
if x>=n:
x="good"
elif x>=m:
x="regular"
else:
x="bad"
return x
# UDF
clase_udf = udf(lambda z: clase(z), StringType())
(
df.select('Income',
'Debt',
clase_udf('Income').alias('new') )
.show()
)
Это дает следующую таблицу:
+------+----+-------+
|Income|Debt| new|
+------+----+-------+
| 12.0|23.0| bad|
| 45.0| 4.0| good|
| 24.0| 1.0|regular|
| 24.0| 6.0|regular|
| 54.0| 3.0| good|
+------+----+-------+
Я хочу получить что-то вроде этого:
+-------+------------+
| Clases| Description|
+-------+------------+
| good| 30<Income|
|regular|20<Income<30|
| bad| Income<20|
+-------+------------+
Как краткое изложение статей