2017-08-23 43 views
0

我正在使用spark 2.1並且腳本是pyspark。請幫助我,因爲我卡在這裏。pyspark多個列上的條件並返回新列

問題陳述:要創建基於多個列

輸入dataframe條件的新欄目低於

FLG1 FLG2 FLG3 

T  F  T 

F  T  T 

T  T  F 

現在我需要創建一個新的列FLG和我的情況會是這樣,如果FLG1==T&&(FLG2==F||FLG2==T)FLG必須T其他F

上述dataframe作爲DF考慮下面

是我的代碼片斷這是試圖

DF.withColumn("FLG",DF.select(when(FLG1=='T' and (FLG2=='F' or FLG2=='T','F').otherwise('T'))).show() 

沒有工作我得到的時候沒有定義

請幫我越過這道障礙

+0

'和'和'or'不會在pyspark中工作 - 請參閱https://issues.apache.org/jira/瀏覽/ SPARK-8568 – desertnaut

回答

1

嘗試下面的名稱,它應該工作

from pyspark.sql.functions import col, when, lit 
DF.withColumn("FLG", when((col("FLG1")=='T') & ((col("FLG2")=='F') | (col("FLG2")=='T')),lit('F')).otherwise(lit('T'))).show() 
+0

Thans快速回復Ramesh。獲取不受支持的操作數類型|:'str'和'Dataframe'可能是什麼問題 – user3292373

+0

嘗試我更新的答案:) –

+0

再次更新:) –