pyspark.sql.functions.explode: возвращает ноль, если столбец является пустым массивом
Набор данных выглядит следующим образом:
%pyspark
df3 = df2.select(df2.event.address.alias("address"), df2.event.artists.alias("artists"))
df3.show()
+--------------------+--------------------+
| address| artists|
+--------------------+--------------------+
|379 Victoria Ave,...|[[0],WrappedArray()]|
|13 Ray Small Driv...|[[0],WrappedArray()]|
+--------------------+--------------------+
Схема выглядит следующим образом:
root
|-- address: string (nullable = true)
|-- artists: struct (nullable = true)
| |-- @attributes: struct (nullable = true)
| | |-- count: long (nullable = true)
| |-- artists: array (nullable = true)
| | |-- element: string (containsNull = true)
Дело в том address
не пусто Тем не менее artists
является пустым WrappedArray.
df4 = df3.select(df3.address, explode(df3.artists.artists).alias("artist"))
df4.show(100)
+-------+------+
|address|artist|
+-------+------+
+-------+------+
Кажется address
столбец присоединился к пустому artists
элемент массива, а затем вернуть 0
так как something
присоединился null
становиться null
, Но то, что я ожидаю, даже artist
является нулем, должен добавить null
в новый столбец.
У любого есть идеи, как зарезервировать новые строки с null
столбец в фрейме данных Pyspark?