PySpark: Как удалить нечисловые c столбцы из DataFrame? - PullRequest
0 голосов
/ 12 марта 2020

Я хочу удалить все столбцы из DataFrame, которые не являются числами c. Я пытаюсь скопировать некоторый код Pandas, который делает это следующим образом:

df = df[df.select_dtypes(exclude=['object']).columns]

Как бы я сделал это для PySpark DataFrame?

1 Ответ

2 голосов
/ 12 марта 2020

Прежде всего, пожалуйста, найдите здесь ссылку на различные типы PySpark.

Приведенный ниже код удаляет строковые столбцы:

df = spark.createDataFrame([
    (1, "a", "xxx", None, "abc", "xyz","fgh"), 
    (2, "b", None, 3, "abc", "xyz","fgh"),
    (3, "c", "a23", None, None, "xyz","fgh")
], ("ID","flag", "col1", "col2", "col3", "col4", "col5"))

from pyspark.sql.types import *
num_cols = [f.name for f in df.schema.fields if not isinstance(f.dataType, StringType)]

df2 = df.select([c for c in num_cols])
df2.show()

+---+----+
| ID|col2|
+---+----+
|  1|null|
|  2|   3|
|  3|null|
+---+----+

В качестве альтернативы (будет точно) вы можете заменить not isinstance на isinstance и включить типы из ссылки выше, которая вас интересует. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...