大量データ処理するとき、高速でスケーラブルな汎用分散処理エンジンの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