繁体   English   中英

Spark MLlib中的列转换

[英]Column transform in Spark MLlib

我已经阅读了用于功能转换的Spark MLlib文档 ,但对于两个简单的情况我仍然感到困惑:

1.如何应对单柱柔性? 例如,我有一个名为“日期”的列,其格式为“ YYYY-MM-DD”,我想基于“日期”生成一个名为“周”的新列。 如果使用pandas.Dataframe,则可以使用Series.apply完成,我的问题是如何在Spark MLlib中做到这一点?

2.如何基于多列生成新列? 例如,我想根据支出和收入来计算投资回报率,在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM