2017-01-04 2 views
0

特定の行の0より大きいすべての列値のカウントを含むpysparkデータフレームに新しい列を追加したいとします。pySparkデータフレームに新しい列を追加するには、0より大きい列の値を数えますか?

ここは私のデモデータフレームです。

+-----------+----+----+----+----+----+----+ 
|customer_id|2010|2011|2012|2013|2014|2015| 
+-----------+----+----+----+----+----+----+ 
|  1  | 0 | 4 | 0 | 32 | 0 | 87 | 
|  2  | 5 | 5 | 56 | 23 | 0 | 09 | 
|  3  | 6 | 6 | 87 | 0 | 45 | 23 | 
|  4  | 7 | 0 | 12 | 89 | 78 | 0 | 
|  6  | 0 | 0 | 0 | 23 | 45 | 64 | 
+-----------+----+----+----+----+----+----+ 

上記のデータフレームは、1年後に顧客が訪問したものです。顧客が何年訪れたかを数えたい。だから私はこれを達成するためにどのように

+-----------+----+----+----+----+----+----+-----------+ 
|customer_id|2010|2011|2012|2013|2014|2015|visit_count| 
+-----------+----+----+----+----+----+----+-----------+ 
|  1  | 0 | 4 | 0 | 32 | 0 | 87 | 3  | 
|  2  | 5 | 5 | 56 | 23 | 0 | 09 | 5  | 
|  3  | 6 | 6 | 87 | 0 | 45 | 23 | 5  | 
|  4  | 7 | 0 | 12 | 89 | 78 | 0 | 4  | 
|  6  | 0 | 0 | 0 | 23 | 45 | 64 | 3  | 
+-----------+----+----+----+----+----+----+-----------+ 
に年に訪問の数より大きい(2010,2011,2012,2013,2014,2015)の値を持つされている列 visit_countが必要ですか?

+0

この試し:それは例外をスローして、 '' – MaxU

+0

@MaxU df.withColumn( '合計'、df.columnsでCOLため[COL] DF和(> 0)) –

答えて

1

これを試してください:

df.withColumn('visit_count', sum((df[col] > 0).cast('integer') for col in df.columns)) 
関連する問題