проблема с литой колонкой в ​​DataFrame с PySpark. SQL - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю с 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.;

Я не понимаю, потому что я ранее приводил столбец в несколько строк там.

Может кто-нибудь мне помочь, пожалуйста?

...