2016-11-04 12 views
-1

同じ列名を持ち、pyspark Dataframeで大文字と小文字を区別しない2つの列を連結する方法は何ですか。pyspark Dataframeで大文字と小文字を区別しない列を同じ名前でマージするには?

Example: 

If i have a dataframe like below where Apple and apple are two different columns 

+---------------+ 
| Apple apple | 
+---------------+ 
| red white | 
| blue yellow | 
| pink blue | 
+---------------+ 

区切り文字でそれをマージし、アルファはあなたがwithColumn( "newColumnName"、)を使用して新しい列を作成することができます

+---------------+ 
| Apple  | 
+---------------+ 
| red,white  | 
| blue,yellow | 
| pink,blue  | 
+---------------+ 
+0

コード例を追加できますか? – Bobby

答えて

0
k = 0 
for i in range(len(columns)): 
    for j in range(i + 1, len(columns)): 
    if columns[i].lower() == columns[j].lower(): 
     k = k+1 
     df = (df.withColumn(columns[i].upper()+str(k),concat(col(columns[i]),lit(","), col(columns[j])))) 
-1

をソートれる値

UDF関数が何かする必要があります2つのストリングを受け取り、それらを連結します。

ヴァル・連結= UDF {(STR1:文字列、STR2:文字列)=> STR1 + str2を} Scalaで

は次のようなものになるだろう

そして、あなたはそれを呼び出します。

df.withColumn( "newColumnName"、CONCAT(COL( "APPLE")、COL( "りんご"))

は、することを忘れないでください:COLとUDFのため 1.インポートするSQL火花機能パッケージ動作するように 2セット。 sqlContext.sql( "set spark.sql.caseSensitive = true")です。それはAPPLE == appleをとらない。 3. APPLEとappleを削除できます。だからあなたは1つだけ(新しい列)

関連する問題