Spark MLlib 中的列转换
Column transform in Spark MLlib
我已经阅读了 Spark MLlib doc 的特征转换,但我仍然对两个简单的案例感到困惑:
1.How如何灵活处理单列?
例如,我有一个名为 "date" 的列,它是 "YYYY-MM-DD" 格式,我想在 "date" 的基础上生成一个名为 "week" 的新列。如果使用 pandas.Dataframe,它可以用 Series.apply 完成,我的问题是如何在 Spark MLlib 中做到这一点?
2.How基于多列生成新列?
比如我想根据支出和收入计算roi,很简单 pandas.DataFrame:
df['roi'] = (df['income'] - df['spend'])/df['spend']
对于Spark.MLlib,我发现 SQLTransformer 可能用于相同的工作,但我不确定
谁能告诉我如何在 Spark.MLlib 中处理这个问题?非常感谢
一个干净的选项是定义您自己的函数,并使用 withColumn()
应用于您的 DataFrame
。请注意,这与 MLlib
无关,因为它指的是 Spark
.
的机器学习模块
from pyspark.sql.types import FloatType
from pyspark.sql.functions import udf
def roiCalc(income, spend): # Define function
return((income - spend)/spend)
roiCalculator = udf(roiCalc, FloatType()) # Convert to udf
df.withColumn("roi", roiCalculator(df["income"],df["spend"])) # Apply to df
我已经阅读了 Spark MLlib doc 的特征转换,但我仍然对两个简单的案例感到困惑:
1.How如何灵活处理单列? 例如,我有一个名为 "date" 的列,它是 "YYYY-MM-DD" 格式,我想在 "date" 的基础上生成一个名为 "week" 的新列。如果使用 pandas.Dataframe,它可以用 Series.apply 完成,我的问题是如何在 Spark MLlib 中做到这一点?
2.How基于多列生成新列? 比如我想根据支出和收入计算roi,很简单 pandas.DataFrame:
df['roi'] = (df['income'] - df['spend'])/df['spend']
对于Spark.MLlib,我发现 SQLTransformer 可能用于相同的工作,但我不确定
谁能告诉我如何在 Spark.MLlib 中处理这个问题?非常感谢
一个干净的选项是定义您自己的函数,并使用 withColumn()
应用于您的 DataFrame
。请注意,这与 MLlib
无关,因为它指的是 Spark
.
from pyspark.sql.types import FloatType
from pyspark.sql.functions import udf
def roiCalc(income, spend): # Define function
return((income - spend)/spend)
roiCalculator = udf(roiCalc, FloatType()) # Convert to udf
df.withColumn("roi", roiCalculator(df["income"],df["spend"])) # Apply to df