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|
+----+----+