2016-12-19 5 views
0

私は次元n x mのDataFrameを持っています。私は次元n x mのDataFrameを返したいと思います。各セルは、それが存在する行に沿った合計の割合を表します。例についてはDataFrame pysparkの行に沿ったパーセンテージ

df=sc.parallelize([ 
    ('a1',15,2,0,3), 
    ('a2',3,9,5,3), 
    ('a2',4,10,4,2), 
    ('a1',0,10,7,3) 
]).toDF(['id1','x1','x2','x3','x4']) 



    id1| x1| x2| x3| x4| 

    | a1| 15| 2| 0| 3| 
    | a2| 3| 9| 5| 3| 
    | a2| 4| 10| 4| 2| 
    | a1| 0| 10| 7| 3| 

私はそれは非常に簡単です

id1| x1| x2| x3| x4| 

    | a1| .75| .1 | .0| .15| 
    | a2| .15| .45| .25| .15| 
    | a2| .2 | .5 | .2 | .1 | 
    | a1| .0 | .5 | .35| .15| 

答えて

1

を返すようにしたいと思います。行ごとの和を計算:

total = sum(df[c] for c in df.columns[1:]) 

select

df.select(df.columns[0], *[(df[c]/total).alias(c) for c in df.columns[1:]]) 
関連する問題