Могу ли я изменить значение NULL для столбца в моем фрейме данных Spark?Python

Программы на Python
Ответить
Anonymous
 Могу ли я изменить значение NULL для столбца в моем фрейме данных Spark?

Сообщение Anonymous »

У меня есть StructField в кадре данных, который не имеет значения NULL. Простой пример:

Код: Выделить всё

import pyspark.sql.functions as F
from pyspark.sql.types import *
l = [('Alice', 1)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df = df.withColumn('foo', F.when(df['name'].isNull(),False).otherwise(True))
df.schema.fields
который возвращает:


[StructField(name,StringType,true),
StructField(age,LongType,true),
StructField(foo,BooleanType,false)]


Уведомление что поле foo не имеет значения NULL. Проблема в том, что (по причинам, в которые я не буду вдаваться) я хочу, чтобы оно допускало значение NULL. Я нашел этот пост «Изменить свойство столбца, допускающее значение null, в Spark DataFrame», в котором предлагался способ сделать это, поэтому я адаптировал приведенный в нем код к следующему:

Код: Выделить всё

import pyspark.sql.functions as F
from pyspark.sql.types import *
l = [('Alice', 1)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df = df.withColumn('foo', F.when(df['name'].isNull(),False).otherwise(True))
df.schema.fields
newSchema = [StructField('name',StringType(),True), StructField('age',LongType(),True),StructField('foo',BooleanType(),False)]
df2 = sqlContext.createDataFrame(df.rdd, newSchema)
что не удалось:


TypeError: StructField(name,StringType,true) не является сериализуемым JSON


Я также вижу это в трассировке стека:


raise ValueError("Циркулярная ссылка обнаружено")


Так что я немного застрял. Может ли кто-нибудь изменить этот пример таким образом, чтобы я мог определить фрейм данных, в котором столбец foo имеет значение NULL?

Подробнее здесь: https://stackoverflow.com/questions/460 ... -dataframe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»