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


PySparkのデータ処理一覧

今回はDataFrameに行を追加する方法を説明します。前回と同じPython とPysparkで比較して色んな例を作成します。

1)DataFrameを作成します。

Python

import pandas as pd

import numpy as  np

pdf = pd.DataFrame(data={‘ColumnA’:np.linspace(1, 3, 3),

                        ‘ColumnB’:[‘red’, ‘yellow’,’green’],

                        ‘ColumnC’: np.array(1) })

pdf

Pyspark

data = [(1, ‘red’, 1), (2, ‘yellow’, 1), (3, ‘green’, 1)]

sdf = sqlContext.createDataFrame(data, [“ColumnA”, “ColumnB”, “ColumnC”])

display(sdf)

Out[1]:

   ColumnA ColumnB  ColumnC

0      1.0     red        1

1      2.0  yellow        1

2      3.0   green        1

2)DataFrameに行を追加します。

pythonのデータフレームライブラリPandasのappendとconcatで、行の追加(縦方向の連結)します。

Python – Append

pdf2 = pd.DataFrame(data={‘ColumnA’:(4, 5),

                        ‘ColumnB’:[‘red’, ‘yellow’],

                        ‘ColumnC’: np.array(2) })

pdf = pdf.append(pdf2, ignore_index=True)

pdf

concatを使って追加。

Python – concat

pdf2 = pd.DataFrame(data={‘ColumnA’:(4, 5),

                        ‘ColumnB’:[‘red’, ‘yellow’],

                        ‘ColumnC’: np.array(2) })

pdf = pd.concat([pdf, pdf2], ignore_index=True)

pdf

Pysparkは unionのクラスで行の追加します。DataFrameと別のDataFrameの行の集合をして新しいDataFrameを返します。

unionAll  はSpark 2.0では推奨されていません。代わりにunionになります。

Pyspark

data2 = [(4, ‘red’, 2), (5, ‘yellow’, 2)]

sdf2 = sqlContext.createDataFrame(data2, [“ColumnA”, “ColumnB”, “ColumnC”])

sdf = sdf.union(sdf2)

display(sdf)

Out[2]:

   ColumnA ColumnB  ColumnC

0      1.0     red        1

1      2.0  yellow        1

2      3.0   green        1

3      4.0     red        2

4      5.0  yellow        2