가을 사용하여 데이터를 열 이름으로 저장되는 열에 있는 값에서 동일한 데이터 프레임 pyspark

0

질문

내가 큰 데이터 집합과 유사하는 아래 예제:

ID 코드 연구 금액 COL_NAME
111 5611 ABCD 56.17 ID
211 5411 입니다 에 GFED 451.1 금액
311 3212 YTRA 687.3 연구

내가 원하는 값을 채우 열에 저장된 col_name 에서 열(COL_VAL)이내에는 동일한 데이터 프레임을 아래와 같:

ID 코드 연구 금액 COL_NAME COL_VALUE
111 5611 ABCD 56.17 ID 111
211 5411 입니다 에 GFED 451.1 금액 451.1
311 3212 YTRA 687.3 연구 YTRA

내가 사용하고.수()을 채우 값 그러나 그것은 많은 시간입니다. 를 알고 싶 효율적인 방법으로 할 같은 관련성에 대한 큰합니다.

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ý
..................................................................................................................