Spark MLlib中的列转换

时间:2016-09-20 06:54:33

标签: python apache-spark spark-dataframe apache-spark-mllib

我已阅读Spark MLlib doc功能转换,但我仍然对两个简单的情况感到困惑:

1.如何处理单列灵活? 例如,我有一个名为" date",' s" YYYY-MM-DD"格式,我想生成一个名为" week"基于" date"。如果使用pandas.Dataframe,可以用Series.apply完成,我的问题是如何在Spark MLlib中做到这一点?

2.如何基于多列生成新列? 例如,我想根据支出和收入计算roi,它在pandas.DataFrame中很简单:

df['roi'] = (df['income'] - df['spend'])/df['spend']

对于Spark.MLlib,我发现SQLTransformer可能用于同样的工作,但我不确定

有没有人能告诉我如何在Spark.MLlib中处理它?非常感谢

1 个答案:

答案 0 :(得分:2)

一个干净的选项是定义您自己的功能,并使用DataFrame应用于您的withColumn()。请注意,这与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
相关问题