Wie ändere ich struct dataType in pyspark in Integer?
Aug 27 2020
Ich habe einen Datenrahmen df und eine Spalte hat den Datentypstruct<long:bigint, string:string>
Aufgrund dieser Datentypstruktur kann ich keine Addition, Subtration usw. durchführen.
wie sich ändern , struct<long:bigint, string:string>um nur IntegerType??
Antworten
werner Aug 28 2020 at 17:32
Sie können eine Punktsyntax verwenden, um auf Teile der Strukturspalte zuzugreifen.
Zum Beispiel, wenn Sie mit diesem Datenrahmen beginnen
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)
Mit use können Sie den ersten Teil der struct-Spalte auswählen und entweder eine neue Spalte erstellen oder eine vorhandene ersetzen:
df.withColumn('col2', df['col2._1']).show()
druckt
+----+----+
|col1|col2|
+----+----+
| 1| 3|
| 4| 8|
+----+----+