2016-05-04 7 views
1

インデックス作成後にデータフレームのカテゴリ変数を折りたたむ簡単なコードを試しています 現在、私のカラムには「A」、「B」、「C」の3つのクラスがあります else文はカラム値を折りたたむためのpysparkのその他の場合

def condition(r): 
if (r.wo_flag=="SLM" or r.wo_flag=="NON-SLM"): 
    r.wo_flag="dispatch" 
else: 
    r.wo_flag="non_dispatch" 
return r.wo_flag 

df_final=df_new.map(lambda x: condition(x)) 

そのこれはサンプルデータ

である、それは他の条件を理解していない

|MData|Recode12|Status|DayOfWeekOfDispatch|MannerOfDispatch|Wo_flag|PlaceOfInjury|Race| 
    M|  11|  M|     4|    7|  C|   99| 1 |  
    M|  8|  D|     3|    7|  A|   99| 1 | 
    F|  10|  W|     2|    7|  C|   99| 1 | 
    M|  9|  D|     1|    7|  B|   99| 1 | 
    M|  8|  D|     2|    7|  C|   99| 1 | 

を働いていないようなクラスを崩壊した場合、単純なを書いています

+0

wo_flagの列で 'A'、 'B'と 'dispatch'、 'C​​'を 'non_dispatch'に置き換えようとしていますか? – Himaprasoon

+0

いくつかのサンプルデータ( 'df'がどのように見えるか)と完全なエラーメッセージを追加すると、私たちはあなたを助けます。 –

+0

@Himaprasoonはい、それは私がやりたいことです。私はDFのようなものも付けました。 –

答えて

7

はこのお試しください:あなたは間違ってやっている

from pyspark.sql.types import StringType 
from pyspark.sql.functions import udf 

def modify_values(r): 
    if r == "A" or r =="B": 
     return "dispatch" 
    else: 
     return "non-dispatch" 
ol_val = udf(modify_values, StringType()) 
new_df = df.withColumn("wo_flag",ol_val(df.wo_flag)) 

もの:

  • あなたはその結果、マップ操作がデータフレームで行われた行(行がimmmutableある)
  • を変更しようとしているがデータ構造はPipelinedRDDであり、データフレームではありません。データフレームを取得するには、.toDF()を適用する必要があります。
関連する問題