ดึงข้อมูลการใช้คอลัมน์รายชื่อถูกจัดเก็บไว้เป็นค่าในคอลัมน์ในที่เดียวกัน dataframe pyspark

0

คำถาม

ฉันมีขนาดใหญ่วันที่คล้ายกับตัวอย่างด้านล่างนี้:

หมายเลข รหัส เรียน จำนวนมาก COL_NAME
111 5611 ABCD 56.17 หมายเลข
211 5411 GFED 451.1 จำนวนมาก
311 3212 YTRA 687.3 เรียน

ฉันอยากจะ populate ค่าของคอลัมน์ถูกจัดเก็บไว้ใน col_name ในคอลัมน์(COL_VAL)อยู่ในที่เดียวกัน dataframe ที่ด้านล่างนี้:

หมายเลข รหัส เรียน จำนวนมาก COL_NAME COL_VALUE
111 5611 ABCD 56.17 หมายเลข 111
211 5411 GFED 451.1 จำนวนมาก 451.1
311 3212 YTRA 687.3 เรียน YTRA

ผมกำลังใช้วงแล้ว.เก็บ()จะ populate ค่าแต่มันเป็นการเวลามากมา อยากจะรู้ว่ามีประสิทธิภาพเพียงพอ smooth scrolling วิธีที่จะทำอย่างเดียวกันที่เกี่ยวข้องสำหรับวันที่ขนาดใหญ่.

apache-spark loops pyspark python
2021-11-23 17:20:27
1

คำตอบที่ดีที่สุด

0

คุณสามารถใช้ when เพื่อประสบความสำเร็จในส่วนี้

from pyspark.sql import functions as F

data = [(111, 5611, "ABCD", 56.17, "ID",),
(211, 5411, "GFED", 451.1, "AMOUNT",),
(311, 3212, "YTRA", 687.3, "STUDY",),]

df = spark.createDataFrame(data, ("ID", "CODE", "STUDY", "AMOUNT","COL_NAME"))

def derive_column_value():
    condition = F
    for possible_value in df.columns:
        condition = condition.when(F.col("COL_NAME") == possible_value, F.col(possible_value))
    return condition

df.withColumn("COL_VALUE", derive_column_value()).show()

ส่งออก

+---+----+-----+------+--------+---------+
| ID|CODE|STUDY|AMOUNT|COL_NAME|COL_VALUE|
+---+----+-----+------+--------+---------+
|111|5611| ABCD| 56.17|      ID|      111|
|211|5411| GFED| 451.1|  AMOUNT|    451.1|
|311|3212| YTRA| 687.3|   STUDY|     YTRA|
+---+----+-----+------+--------+---------+
2021-11-23 17:41:06

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่