PySparkでDataFrameに列を追加する方法


PySparkのデータ処理一覧

大量データ処理するとき、高速でスケーラブルな汎用分散処理エンジンのSparkが、よく使われます。 PySparkはSparkを実行するためのPython APIです。今回は PySparkでDataFrameに列を追加する方法を説明します。PythonとPySparkで比較して色んな例を作成します。

1)DataFrame作成します。

Python

import pandas as pd

import numpy as np

df = pd.DataFrame(data=np.array(range(5)), columns=[‘number’])

df

   

 

PySpark

sdf = spark.range(5).toDF(“number”)

display(sdf)

 

Out[1]:

   number

0       0

1       1

2       2

3       3

4       4

 

2)DataFrameに値の列を追加します。

WithColumn関数を用いて新しく追加します。またlit関数を用いて、複数の値にしています。

new_column1 = 10

Python

df[‘new_column1’] = 10

df


 

 

PySpark

from pyspark.sql.functions import lit

sdf = sdf.withColumn(‘new_column1’, lit(10))

display(sdf)

ntent

Out[2]:

   number  new_column1

0       0           10

1       1           10

2       2           10

3       3           10

4       4           10

 

 

3)DataFrameに計算した値の列を追加します。こちらもWithColumn関数が必要です。

new_column2 = new_column1 * 2

Python

df[‘new_column2’] = df[‘new_column1’]*2

df


 

 

PySpark

from pyspark.sql.functions import lit

sdf = sdf.withColumn(‘new_column2’, sdf[‘new_column1’]*2)

display(sdf)

 

Out[3]:

   number  new_column1  new_column2

0       0           10           20

1       1           10           20

2       2           10           20

3       3           10           20

4       4           10           20

 

4)DataFrameに合計値の列を追加します。

total = number + new_column1 + new_column2

Python

df[‘total’] = df[‘number’]+df[‘new_column1’]+df[‘new_column2’]

df


 

PySpark

from pyspark.sql.functions import lit

sdf = sdf.withColumn(‘total’, sdf[‘number’]+sdf[‘new_column1’]+sdf[‘new_column2’])

display(sdf)

 

Out[4]:

   number  new_column1  new_column2  total

0       0           10           20     30

1       1           10           20     31

2       2           10           20     32

3       3           10           20     33

4       4           10           20     34