gpt4 book ai didi

python - 如何使用列值作为 PySpark 中字典的键?

转载 作者:行者123 更新时间:2023-12-05 01:54:54 48 4
gpt4 key购买 nike

我有一个小型 PySpark DataFrame df:

index    col1
0 1
1 3
2 4

还有一本字典:

LOOKUP = {0: 2, 1: 5, 2: 5, 3: 4, 4: 6}

我现在想向 df 添加一个额外的列 col2,等于 col1LOOKUP 值.

我的输出应该是这样的:

index    col1 col2
0 1 5
1 3 4
2 4 6

我尝试使用:

df = df.withColumn(col("col2"), LOOKUP[col("col1")])

但这给了我错误,以及使用 expr

如何在 PySpark 中实现这一点?

最佳答案

您可以使用从lookup 字典创建的map 列:

from itertools import chain
from pyspark.sql import functions as F

lookup = {0: 2, 1: 5, 2: 5, 3: 4, 4: 6}
lookup_map = F.create_map(*[F.lit(x) for x in chain(*lookup.items())])

df1 = df.withColumn("col2", lookup_map[F.col("col1")])

df1.show()
#+-----+----+----+
#|index|col1|col2|
#+-----+----+----+
#| 0| 1| 5|
#| 1| 3| 4|
#| 2| 4| 6|
#+-----+----+----+

另一种方法是从字典创建一个lookup_df,然后加入您的数据框

关于python - 如何使用列值作为 PySpark 中字典的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70462865/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com