PysparkのDataFrameのTips集

技術記

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()

## ここから各セクションのサンプルコードを入れる
部門売上日時
営業1002023-02-01 10:30:00
開発2002023-02-02 11:00:00
人事3002023-02-03 12:15:00
営業1502023-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()
部門売上日時売上ラベル
営業1002023-02-01 10:30:00並売上
開発2002023-02-02 11:00:00高売上
人事3002023-02-03 12:15:00高売上
営業1502023-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()
部門売上日時売上ラベル
営業1002023-02-01 10:30:00小売上
開発2002023-02-02 11:00:00高売上
人事3002023-02-03 12:15:00高売上
営業1502023-02-01 09:45:00並売上

コメント

タイトルとURLをコピーしました