今回は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) }) |
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) |
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) |
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