Как удалить столбцы в pyspark кадре данных

>>> a
DataFrame[id: bigint, julian_date: string, user_id: bigint]
>>> b
DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]
>>> a.join(b, a.id==b.id, 'outer')
DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint]

Существуют два id: bigint и я хочу удалить тот. Как я могу сделать?

58
задан 13 April 2015 в 11:51

2 ответа

Рассмотрите 2 кадра данных:

>>> aDF.show()
+---+----+
| id|datA|
+---+----+
|  1|  a1|
|  2|  a2|
|  3|  a3|
+---+----+

и

>>> bDF.show()
+---+----+
| id|datB|
+---+----+
|  2|  b2|
|  3|  b3|
|  4|  b4|
+---+----+

Для выполнения, что Вы ищете существует 2 пути:

1. Другое условие присоединения. Вместо того, чтобы говорить aDF.id == Запись bDF.id

aDF.join(bDF, aDF.id == bDF.id, "outer")

это:

aDF.join(bDF, "id", "outer").show()
+---+----+----+
| id|datA|datB|
+---+----+----+
|  1|  a1|null|
|  3|  a3|  b3|
|  2|  a2|  b2|
|  4|null|  b4|
+---+----+----+

Это автоматически избавится от дополнительного отбрасывающий процесс.

2. Используйте Искажение: Вы потеряете данные, связанные с Определенным идентификатором B в этом.

>>> from pyspark.sql.functions import col
>>> aDF.alias("a").join(bDF.alias("b"), aDF.id == bDF.id, "outer").drop(col("b.id")).show()

+----+----+----+
|  id|datA|datB|
+----+----+----+
|   1|  a1|null|
|   3|  a3|  b3|
|   2|  a2|  b2|
|null|null|  b4|
+----+----+----+
0
ответ дан 1 November 2019 в 13:19

Можно удалить столбец как это:

df.drop("column Name).columns

В Вашем случае:

df.drop("id").columns

, Если Вы хотите отбросить больше чем один столбец, можно сделать:

dfWithLongColName.drop("ORIGIN_COUNTRY_NAME", "DEST_COUNTRY_NAME")
-1
ответ дан 1 November 2019 в 13:19

Другие вопросы по тегам:

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