2016-09-20 7 views
0

私は、変換機能のためにSpark MLlib doc読みましたが、私はまだ2つの簡単な例について混乱しています:列スパークMLlibに変換は

1.Howは、柔軟な単一の列に対処するには? たとえば、「date」という名前の列が1つあります。「YYYY-MM-DD」形式です。「date」に基づいて「week」という新しい列を1つ生成します。 pandas.Dataframeを使用する場合は、Series.applyを使って行うことができます。私の質問は、Spark MLlibでそれを行う方法です。

2.How多列に基づいて新しい列を生成するには? 例えば、私はそれがpandas.DataFrameに簡単です、支出と収入に基づいてROIを計算したい:Spark.MLlibについては

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

、私はSQLTransformerが同じ仕事のために使用することができる見つけることが、私はわかりません

どんな男はSpark.MLlibにそれに対処する方法を教えてもらえますか?ありがとうございます

答えて

2

クリーンなオプションは、独自の関数を定義し、withColumn()を使用してDataFrameに適用することです。これは機械学習モジュールSparkを指すので、MLlibとは関係がないことに注意してください。

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 
+0

おかげで多くは、それは私が前に混乱していたものです – linpingta

関連する問題