2017-09-21 1 views
1
from pyspark.sql import Row, functions as F 
    row = Row("UK_1","UK_2","Date","Cat") 
    df = (sc.parallelize 
    ([ 
     row(1,1,'12/10/2016',"A"), 
     row(1,2,None,'A'), 
     row(2,1,'14/10/2016','B'), 
     row(3,3,'!~2016/2/276','B'), 
     row(None,1,'26/09/2016','A'), 
     row(1,1,'12/10/2016',"A"), 
     row(1,2,None,'A'), 
     row(2,1,'14/10/2016','B'), 
     row(None,None,'!~2016/2/276','B'), 
     row(None,1,'26/09/2016','A') 
     ]).toDF()) 

     pks = ["UK_1","UK_2"] 

     df1 = (
     df 
     .select(columns) 
     #.withColumn('pk',F.concat(pks)) 
     .withColumn('pk',F.concat("UK_1","UK_2")) 
    ) 

    df1.show() 

어떻게하면 concat에 열 목록에 전달할 수 있습니까? 열이 다양하고 목록으로 전달하려는 시나리오에 대한 코드를 사용하고 싶습니다. 파이썬에서리스트를 전달하여 concat 데이터 프레임 열

답변

2

네, 구문은 *args (인수의 변수 번호) : u'cannot의 해결 \ ' "UK_1"\'주어진 입력 열 : 나는 다음과 같은 오류, AnalysisException을 얻고있다

df.withColumn("pk", F.concat(*pks)).show() 

+----+----+------------+---+----+ 
|UK_1|UK_2|  Date|Cat| pk| 
+----+----+------------+---+----+ 
| 1| 1| 12/10/2016| A| 11| 
| 1| 2|  null| A| 12| 
| 2| 1| 14/10/2016| B| 21| 
| 3| 3|!~2016/2/276| B| 33| 
|null| 1| 26/09/2016| A|null| 
| 1| 1| 12/10/2016| A| 11| 
| 1| 2|  null| A| 12| 
| 2| 1| 14/10/2016| B| 21| 
|null|null|!~2016/2/276| B|null| 
|null| 1| 26/09/2016| A|null| 
+----+----+------------+---+----+ 
+0

[ UK_1, UK_2, 날짜, 고양이]; ' –

+0

열 이름 주변에 몇 가지 추가 인용 부호가있는 것 같습니다. 'pks'를 검사하고 문자열에 불필요한 따옴표가 없는지 확인하십시오. – Psidom

관련 문제