Làm cách nào để thay đổi struct dataType thành Integer trong pyspark?

Aug 27 2020

Tôi có df khung dữ liệu và một cột có kiểu dữ liệu làstruct<long:bigint, string:string>

vì cấu trúc kiểu dữ liệu này, tôi không thể thực hiện cộng, trừ, v.v.

làm thế nào để thay đổi struct<long:bigint, string:string>thành chỉ IntegerType??

Trả lời

werner Aug 28 2020 at 17:32

Bạn có thể sử dụng cú pháp dấu chấm để truy cập các phần của cột struct.

Ví dụ: nếu bạn bắt đầu với khung dữ liệu này

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)

sử dụng có thể chọn phần đầu tiên của cột struct và tạo một cột mới hoặc thay thế một cột hiện có:

df.withColumn('col2', df['col2._1']).show()

bản in

+----+----+
|col1|col2|
+----+----+
|   1|   3|
|   4|   8|
+----+----+