У меня есть DataFrame, имеющий столбец value
в формате string
.В этом строковом столбце есть пустые места.Я хочу преобразовать его в целое число.
from pyspark.sql.functions import col
valuesCol = [(' 11221',),(' 201201',),(' 1234',)]
df = sqlContext.createDataFrame(valuesCol,['value'])
df.show()
+--------+
| value|
+--------+
| 11221|
| 201201|
| 1234|
+--------+
I cast
в целое число, но это возвращает столбец Nulls
-
df = df.withColumn('value', col('value').cast('int'))
df.show()
+-----+
|value|
+-----+
| null|
| null|
| null|
+-----+
Но, если я cast
это в float
, тогда это работает. Может ли кто-нибудь объяснить эту аномалию? Далее, если я соединю эту cast('float)
с cast('int)
, тогда я могу получить интегральные значения.
df1 = df.withColumn('value', col('value').cast('float'))
df1.show()
+--------+
| value|
+--------+
| 11221.0|
|201201.0|
| 1234.0|
+--------+
Цепочка -
df1 = df.withColumn('value', col('value').cast('float').cast('int'))
df1.show()
+------+
| value|
+------+
| 11221|
|201201|
| 1234|
+------+
df1.printSchema()
root
|-- value: integer (nullable = true)