Как исправить & ldquo; Integer не может принять объект '24' в типе < тип 'str' > & rdquo ;?

[[1] * 4] * 3

или даже:

[[1, 1, 1, 1]] * 3

Создает список, который ссылается на внутренний [1,1,1,1] 3 раза - не три копии внутреннего списка, поэтому в любое время, когда вы изменяете список (в любом позиция), вы увидите изменение три раза.

Это то же самое, что и в этом примере:

>>> inner = [1,1,1,1]
>>> outer = [inner]*3
>>> outer
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>> inner[0] = 5
>>> outer
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]

, где это, вероятно, немного менее удивительно.

0
задан Niveditha S 24 March 2019 в 04:37
поделиться

1 ответ

StructField('age',IntegerType(),False)

Ваше поле возраста имеет тип int. Но когда вы читаете из CSV, все читается как строки. Вместо этого вы можете изменить тип данных на StringType в схеме, а затем преобразовать столбец в IntegerType:

df = df.withColumn("age", df["age"].cast(IntegerType())).collect()
0
ответ дан entropy 24 March 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: