Я работаю с Databricks. Я работаю над DataFrame со многими столбцами, и мне нужно поставить правильный тип для каждого. Некоторые из них имеют строковый тип, другие - int. Изначально все столбцы задаются в виде «строки». Чтобы реализовать эту задачу, я использую эту функцию:
NewDataFrame.select(NewDataFrame.attack.cast("int")
, и я повторяю эту функцию для каждого столбца, который должен быть изменен для типа «int». Мой первый вопрос: существует ли функция, которая позволяет мне изменять все столбцы одновременно, а не применять эту функцию каждый раз?
Во-вторых, несколькими строчками вниз я должен был найти имя покемона (столбец «имя»), которое имеет наиболее важное значение атаки в каждом типе (grass, fire et c ..) , Для этого я пишу эту функцию:
PokWithMaxAttack_Grass = NewDataFrame.select('name').filter(NewDataFrame.groupBy().max('attack') and NewDataFrame['type1']== 'grass').collect()
Она говорит мне, что есть ошибка:
org.apache.spark.sql.AnalysisException: "attack" is not a numeric column. Aggregation function can only be applied on a numeric column.;
Я не понимаю, потому что я ранее приводил столбец в несколько строк там.
Может кто-нибудь мне помочь, пожалуйста?