Pyspark - приведение строки col с начальными или конечными пробелами в целое число создает столбец Nulls - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...