メインコンテンツまでスキップ

from_csv

CSV 文字列を含む列を、指定されたスキーマを持つ行に解析します。文字列を解析できない場合はnullを返します。

構文

Python
from pyspark.sql import functions as sf

sf.from_csv(col, schema, options=None)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

CSV 形式の列または列名。

schema

pyspark.sql.Column または文字列

CSV 列を解析するときに使用する列、または DDL 形式のスキーマを持つ Python 文字列リテラル。

options

辞書(オプション)

解析を制御するためのオプション。CSV データソースと同じオプションを受け入れます。

戻り値

pyspark.sql.Column: 解析された CSV 値の列。

例 1 : 単純なCSV文字列の解析

Python
from pyspark.sql import functions as sf
data = [("1,2,3",)]
df = spark.createDataFrame(data, ("value",))
df.select(sf.from_csv(df.value, "a INT, b INT, c INT")).show()
Output
+---------------+
|from_csv(value)|
+---------------+
| {1, 2, 3}|
+---------------+

例2 : schema_of_csvを使用してスキーマを推測する

Python
from pyspark.sql import functions as sf
data = [("1,2,3",)]
value = data[0][0]
df.select(sf.from_csv(df.value, sf.schema_of_csv(value))).show()
Output
+---------------+
|from_csv(value)|
+---------------+
| {1, 2, 3}|
+---------------+

例 3 : CSV文字列の先頭の空白を無視する

Python
from pyspark.sql import functions as sf
data = [(" abc",)]
df = spark.createDataFrame(data, ("value",))
options = {'ignoreLeadingWhiteSpace': True}
df.select(sf.from_csv(df.value, "s string", options)).show()
Output
+---------------+
|from_csv(value)|
+---------------+
| {abc}|
+---------------+

例4 : 欠損値を持つCSV文字列の解析

Python
from pyspark.sql import functions as sf
data = [("1,2,",)]
df = spark.createDataFrame(data, ("value",))
df.select(sf.from_csv(df.value, "a INT, b INT, c INT")).show()
Output
+---------------+
|from_csv(value)|
+---------------+
| {1, 2, NULL}|
+---------------+

例 5 : 異なる区切り文字を使用したCSV文字列の解析

Python
from pyspark.sql import functions as sf
data = [("1;2;3",)]
df = spark.createDataFrame(data, ("value",))
options = {'delimiter': ';'}
df.select(sf.from_csv(df.value, "a INT, b INT, c INT", options)).show()
Output
+---------------+
|from_csv(value)|
+---------------+
| {1, 2, 3}|
+---------------+