Объединить два столбца в искровом фрейме данных в один столбец

Это сработало для меня

mysql> **SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())- UNIX_TIMESTAMP(NOW())%(15*60));**
+---------------------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())- UNIX_TIMESTAMP(NOW())%(15*60)) |
+---------------------------------------------------------------------+
| 2012-02-09 11:15:00                                                 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
0
задан Lasang 19 March 2019 в 06:15
поделиться

2 ответа

Создайте новый столбец, используя array и explode, чтобы объединить и сгладить два столбца. Затем для удаления дубликатов используйте dropDuplicates:

from pyspark.sql.functions import array, explode

df2 = df.select(explode(array("src", "dst")).alias("id"))
  .dropDuplicates()
0
ответ дан Shaido 19 March 2019 в 06:15
поделиться

Обновление

Самым простым может быть выбор каждого столбца, union их и вызов distinct:

from pyspark.sql.functions import col
df2 = df.select(col("src").alias("id")).union(df.select(col("dst").alias("id"))).distinct()
df2.show()
#+---+
#| id|
#+---+
#|  1|
#|  3|
#|  2|
#+---+
<час>

можно также выполнить это с помощью внешнего соединения:

df2 = df.select(col("src").alias("id"))\
    .join(
        df.select(col("dst").alias("id")),
        on="id",
        how="outer"
    )\
    .distinct()
0
ответ дан pault 19 March 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: