#list #pyspark
Вопрос:
numerical_cols = ["temperature","timestamp"] ID temperature system_state timestamp 0 B 12 inactive 1632733508 1 B 13 active 1632733508 2 A 4 NULL 1632733511 3 A 11 NULL 1632733512 4 D 20 450 1632733513 5 D 22 431 1632733515 6 C 25 20 1632733518 7 C 19 30 1632733521
У меня есть фрейм данных с несколькими столбцами и списком, частично содержащим имена столбцов df. Теперь я хочу проверить, существует ли столбец в списке. Если столбец находится в списке, он должен быть приведен к двойному типу. Как я могу это сделать?
Ответ №1:
Вот пример того, как это сделать:
spark = SparkSession.builder.getOrCreate() data = [{"a": "12.1", "b": "23.2", "c": "33.2"}] columns = ["a", "c"] df = spark.createDataFrame(data) df = df.select( [F.col(c).cast(DoubleType()) if c in columns else F.col(c) for c in df.columns] )
Результат:
root |-- a: double (nullable = true) |-- b: string (nullable = true) |-- c: double (nullable = true) ---- ---- ---- |a |b |c | ---- ---- ---- |12.1|23.2|33.2| ---- ---- ----