概要
Spark(Databricks)のPySparkにてデータフレーム操作する時にカラムを指定してデータ取得する方法を紹介します。
確認済みの4パターンにおけるコードを提示します。
- カラム名を直接リストで指定する方法
- カラム名をcol関数で指定する方法
- カラム名をデータフレームのオブジェクト名(書式:DataFrameName['column_name'])で指定する方法
- カラム名をデータフレームのオブジェクト名(書式:DataFrameName.column_name)で指定する方法
詳細は下記のGithub pagesのページをご確認ください。
コードを実行したい方は、下記のdbcファイルを取り込んでください。
https://github.com/manabian-/databricks_tecks_for_qiita/blob/main/tecks/how_to_select_columns_by_pyspark/dbc/how_to_select_columns_by_pyspark.dbc
検証環境
databricks runtime: 8.1.x-scala2.12
Python version: 3.8.8
pyspark version: 3.1.1.dev0
カラムを指定してデータを取得する方法
カラム名を直接リストで指定する方法
# 単一のカラムを指定する方法
df.select('c_custkey').limit(10).display()
# 複数のカラムを指定する方法
columns = ['c_custkey','c_name']
print(columns)
df.select(columns).limit(10).display()
カラム名をcol関数で指定する方法
# 単一のカラムを指定する方法
from pyspark.sql.functions import col
df.select(col('c_address')).limit(10).display()
# 複数のカラムを指定する方法
from pyspark.sql.functions import col
columns = ['c_address', 'c_nationkey']
col_columns = []
for column in columns:
col_columns.append(col(column))
print(col_columns)
df.select(col_columns).limit(10).display()
カラム名をデータフレームのオブジェクト名(書式:DataFrameName['column_name'])で指定する方法
# 単一のカラムを指定する方法
df.select(df['c_phone']).limit(10).display()
# 複数のカラムを指定する方法
columns = ['c_phone', 'c_acctbal']
col_columns = []
for column in columns:
col_columns.append(df[column])
print(col_columns)
df.select(col_columns).limit(10).display()
カラム名をデータフレームのオブジェクト名(書式:DataFrameName.column_name)で指定する方法
# 単一のカラムを指定する方法
df.select(df.c_mktsegment).limit(10).display()
# 複数のカラムを指定する方法
columns = [df.c_mktsegment, df.c_comment]
print(columns)
df.select(columns).limit(10).display()