PysparkのDataFrameのTips集
目的
PysparkのDataFrameの編集で良く使うメソッドをまとめます
前提
以下のデータフレームがある前提
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder.getOrCreate()
# サンプル用 DataFrame
data = [
("営業", 100, "2023-02-01 10:30:00"),
("開発", 200, "2023-02-02 11:00:00"),
("人事", 300, "2023-02-03 12:15:00"),
("営業", 150, "2023-02-01 09:45:00")
]
columns = ["部門", "売上", "日時"]
df = spark.createDataFrame(data, columns)
df.show()
## ここから各セクションのサンプルコードを入れる
部門 | 売上 | 日時 |
---|---|---|
営業 | 100 | 2023-02-01 10:30:00 |
開発 | 200 | 2023-02-02 11:00:00 |
人事 | 300 | 2023-02-03 12:15:00 |
営業 | 150 | 2023-02-01 09:45:00 |
列の追加、列の内容変更 withColumn
列の追加
- 新しい行を追加する場合は
withColumn
を利用する - 基本的に何らかの条件式を入れる場合があるので
when
を使う - 決められた文字を入れる場合は
lit
を使う lit
を使う場合はシングルクォーテーションで囲む
例:売上が200以上なら「高売上」、それ以外は「並売上」というラベル列を追加
df_with_label = df.withColumn(
"売上ラベル",
F.when(
F.col("売上") >= 200,
F.lit('高売上')
).otherwise(
F.lit('並売上')
)
)
df_with_label.show()
部門 | 売上 | 日時 | 売上ラベル |
---|---|---|---|
営業 | 100 | 2023-02-01 10:30:00 | 並売上 |
開発 | 200 | 2023-02-02 11:00:00 | 高売上 |
人事 | 300 | 2023-02-03 12:15:00 | 高売上 |
営業 | 150 | 2023-02-01 09:45:00 | 並売上 |
列の内容変更
- 行の内容を変更する場合でも
withColumn
を利用する - 元の列名を指定することで既存列の内容を上書きする
例:売上が150未満なら「小売上」という条件を入れる
df_with_label = df.withColumn(
"売上ラベル", #既存の列名を指定
F.when(
F.col("売上") < 150,
F.lit('小売上')
).otherwise(
F.col("売上ラベル") #元の列名を指定
)
)
df_with_label.show()
部門 | 売上 | 日時 | 売上ラベル |
---|---|---|---|
営業 | 100 | 2023-02-01 10:30:00 | 小売上 |
開発 | 200 | 2023-02-02 11:00:00 | 高売上 |
人事 | 300 | 2023-02-03 12:15:00 | 高売上 |
営業 | 150 | 2023-02-01 09:45:00 | 並売上 |
コメント