■ はじめに
https://dk521123.hatenablog.com/entry/2020/05/18/154829
の続き。 小ネタ。 デフォルト項目名「_c0」などの項目を変更するのに 項目数を取得したかったのでメモする
目次
【1】項目数を取得するには 【2】サンプル 例1:簡単なサンプル 例2:デフォルト項目名「_c0」を変更する
【1】項目数を取得するには
data_frame.columns で項目名のリストが取得できるので、 len(data_frame.columns) で可能。
【2】サンプル
テストデータ「input.csv」(ヘッダーなし)
x0001,Mike,Sales x0002,Tom,IT x0003,Sam,Sales x0004,Kevin,Human resources x0005,Bob,IT x0006,Alice,Banking x0007,Carol,IT x0008,Tom,Banking x0009,Mike,IT x0010,Bob,Sales
例1:簡単なサンプル
from pyspark import SparkContext from pyspark.sql import SparkSession spark_context = SparkContext() spark = SparkSession(spark_context) data_frame = spark.read.csv("input.csv", header=False) print(f"column number = {len(data_frame.columns)}") print(f"column = {data_frame.columns}") data_frame.show()
出力結果
column number = 3 column = ['_c0', '_c1', '_c2'] +-----+-----+---------------+ | _c0| _c1| _c2| +-----+-----+---------------+ |x0001| Mike| Sales| |x0002| Tom| IT| |x0003| Sam| Sales| |x0004|Kevin|Human resources| |x0005| Bob| IT| |x0006|Alice| Banking| |x0007|Carol| IT| |x0008| Tom| Banking| |x0009| Mike| IT| |x0010| Bob| Sales| +-----+-----+---------------+
例2:デフォルト項目名「_c0」を変更する
from pyspark import SparkContext from pyspark.sql import SparkSession from pyspark.sql.types import StructType from pyspark.sql.types import StructField from pyspark.sql.types import StringType spark_context = SparkContext() spark = SparkSession(spark_context) data_frame = spark.read.csv("input.csv", header=False) column_count = len(data_frame.columns) item_list = \ [StructField(f"column_{i}", StringType(), True) \ for i in range(column_count)] schema = StructType(item_list) data_frame = spark.createDataFrame(data_frame.rdd, schema) data_frame.show()
出力結果
+--------+--------+---------------+ |column_0|column_1| column_2| +--------+--------+---------------+ | x0001| Mike| Sales| | x0002| Tom| IT| | x0003| Sam| Sales| | x0004| Kevin|Human resources| | x0005| Bob| IT| | x0006| Alice| Banking| | x0007| Carol| IT| | x0008| Tom| Banking| | x0009| Mike| IT| | x0010| Bob| Sales| +--------+--------+---------------+
関連記事
PySpark ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2019/11/14/221126
PySpark ~ DataFrame / データ操作編 ~
https://dk521123.hatenablog.com/entry/2020/01/04/150942
PySpark ~ DataFrame / テーブル・項目操作編 ~
https://dk521123.hatenablog.com/entry/2020/05/18/154829
PySpark ~ DB・テーブル・項目取得編 ~
https://dk521123.hatenablog.com/entry/2021/05/24/144317