Как я могу проверить, содержит ли фрейм данных столбец в соответствии со списком имен столбцов в Pyspark?

#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|  ---- ---- ----