Comment changer struct dataType en Integer dans pyspark?
Aug 27 2020
J'ai un dataframe df , et une colonne a un type de données destruct<long:bigint, string:string>
à cause de cette structure de type de données, je ne peux pas effectuer d'addition, de soustraction etc ...
comment changer struct<long:bigint, string:string>pour juste IntegerType??
Réponses
werner Aug 28 2020 at 17:32
Vous pouvez utiliser une syntaxe de point pour accéder à des parties de la colonne struct.
Par exemple, si vous commencez avec ce dataframe
df = spark.createDataFrame([(1,(3,'x')),(4,(8, 'y'))]).toDF("col1", "col2")
df.show()
df.printSchema()
+----+------+
|col1| col2|
+----+------+
| 1|[3, x]|
| 4|[8, y]|
+----+------+
root
|-- col1: long (nullable = true)
|-- col2: struct (nullable = true)
| |-- _1: long (nullable = true)
| |-- _2: string (nullable = true)
use peut sélectionner la première partie de la colonne struct et créer une nouvelle colonne ou remplacer une colonne existante:
df.withColumn('col2', df['col2._1']).show()
impressions
+----+----+
|col1|col2|
+----+----+
| 1| 3|
| 4| 8|
+----+----+