Как я могу ссылаться на столбец с дефисом в его имени в выражении столбца pyspark? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть документ json, имеющий такую ​​форму (обратите внимание, что эта схема не находится под моим контролем - я не могу избавиться от дефиса в ключе):

{
   "col1": "value1",
   "dictionary-a": {
      "col2": "value2"
   }
}

Я использую session.read.json(...) чтобы прочитать этот json на фрейм данных (с именем 'df') следующим образом:

df = session.read.json('/path/to/json.json')

Я хочу сделать это:

df2 = df.withColumn("col2", df.dictionary-a.col2)

Я получаю ошибку:

AttributeError: 'DataFrame' object has no attribute 'dictionary'

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

1 Ответ

0 голосов
/ 14 сентября 2018

Если у вас есть, дефис в df.dictionary-a.col2 оценивается как вычитание: df.dictionary - a.col2.

Вместо этого вы можете использовать pyspark.sql.functions.col, чтобы обратиться к столбцу с помощьюимя и pyspark.sql.Column.getItem для доступа к элементу словаря по ключу.

Попробуйте:

from pyspark.sql.functions import col
df2 = df.withColumn("col2", col("dictionary-a").getItem("col2"))
...