【发布时间】:2019-12-16 15:30:43
【问题描述】:
假设我有一个这样的数据框:
+-----------+-----------+-----------+-----------+------------+--+
| ColA | ColB | ColC | ColD | ColE | |
+-----------+-----------+-----------+-----------+------------+--+
| '' | sample_1x | sample_1y | '' | sample_1z | |
| sample2_x | sample2_y | '' | '' | '' | |
| sample3_x | '' | '' | '' | sample3_y | |
| sample4_x | sample4_y | '' | sample4_z | sample4_zz | |
| sample5_x | '' | '' | '' | '' | |
+-----------+-----------+-----------+-----------+------------+--+
我想创建另一个数据框,在每一行中显示从左到右的关系,同时跳过具有空值的列。也将排除只有 1 个有效的列式记录的行。例如:
+-----------+------------+-----------+
| From | To | Label |
+-----------+------------+-----------+
| sample1_x | sample1_y | ColB_ColC |
| sample1_y | sample1_z | ColC_ColE |
| sample2_x | sample2_y | ColA_ColB |
| sample3_x | sample3_y | ColA_ColE |
| sample4_x | sample4_y | ColA_ColB |
| sample4_y | sample4_z | ColB_ColD |
| sample4_z | sample4_zz | ColD_ColE |
+-----------+------------+-----------+
我认为这种方法是编写一个包含此逻辑的 UDF,但我不完全确定如何返回一个全新的 DF,因为我习惯于 UDF 只是在同一个 DF 中创建另一列.或者,如果有另一个 spark 函数可以比创建 UDF 更容易处理这种情况?如果这很重要,请使用 pyspark。
【问题讨论】:
标签: dataframe apache-spark pyspark apache-spark-sql user-defined-functions