Jak zmienić struct dataType na Integer w Pyspark?
Aug 27 2020
Mam df dataframe , a jedna kolumna ma typ danychstruct<long:bigint, string:string>
ze względu na tę strukturę typu danych nie mogę wykonywać dodawania, odejmowania itp.
jak zmienić struct<long:bigint, string:string>tylko IntegerType??
Odpowiedzi
werner Aug 28 2020 at 17:32
Możesz użyć składni kropkowej, aby uzyskać dostęp do części kolumny struct.
Na przykład, jeśli zaczniesz od tej ramki danych
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 może wybrać pierwszą część kolumny struct i albo utworzyć nową kolumnę, albo zastąpić istniejącą:
df.withColumn('col2', df['col2._1']).show()
wydruki
+----+----+
|col1|col2|
+----+----+
| 1| 3|
| 4| 8|
+----+----+