PySpark не может выбрать столбец после разворота - PullRequest
0 голосов
/ 23 января 2020

У меня есть фрейм данных со столбцом Timestamp, столбцом Tag и столбцом Value. Я сделал такой поворот:

df = df.groupBy("Timestamp").pivot("Tag").mean()

, который работает хорошо, дает мне то, что я хочу. Когда я показываю столбцы, я получаю

df.columns
----------------------------------------
['Timestamp', 'TAG:Tag1.val', 'TAG:Tag2.val', 'TAG:Tag3.val']

Но затем, когда я пытаюсь выбрать столбец, у меня появляется эта ошибка:

df.select('TAG:Tag1.val')
----------------------------------------
org.apache.spark.sql.AnalysisException: cannot resolve '`TAG:Tag1.val`' given input columns: [Timestamp, TAG:Tag1.val, TAG:Tag2.val, TAG:Tag3.val];;

Я пытался дать имя напрямую, используя df.columns[0], df.schema.fieldNames(), выполнив df=df.toDF(*df.schema.fieldNames()) перед выбором.

Всегда одно и то же сообщение об ошибке. Знаете ли вы, почему это происходит?

Я также пытался жестко закодировать список столбцов в .pivot("Tag", list_tags), получил тот же результат.

Я также должен сказать вам, что выбор Timestamp работает отлично хорошо.

1 Ответ

0 голосов
/ 23 января 2020

Вот способ, вам нужно обернуть имена столбцов обратными чертами:

df.select('`TAG:Tag1.val`').show()

Чтобы проверить все столбцы, вы можете сделать:

df.select([f'`{x}`' for x in df.columns]).show()
...