PySpark, как перебрать столбцы Dataframe и изменить тип данных? - PullRequest
0 голосов
/ 05 марта 2020

Каков наилучший способ перебрать Spark Dataframe (используя Pyspark) и найти тип данных Decimal(38,10) -> изменить его на Bigint (и сохранить все в одном и том же кадре данных)?

У меня есть часть для изменения типов данных - например:

df = df.withColumn("COLUMN_X", df["COLUMN_X"].cast(IntegerType()))

, но пытается найти и интегрировать с итерацией.

Спасибо.

Ответы [ 2 ]

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

Вы можете l oop через df.dtypes и привести к bigint, когда тип равен decimal(38,10):

from pyspark.sql.funtions import col

select_expr = [
    col(c).cast("bigint") if t == "decimal(38,10)" else col(c) for c, t in df.dtypes
]

df = df.select(*select_expr)
0 голосов
/ 24 марта 2020

Я нашел этот пост { ссылка }, где вы можете l oop пройти через все столбцы и привести их к нужному типу данных.

from pyspark.sql import functions as F

for col in df.columns:
  df = df.withColumn(
    col,
    F.col(col).cast("double")
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...