gpt4 book ai didi

python - PySpark - 检查值列表是否存在于 Dataframe 的任何列中

转载 作者:行者123 更新时间:2023-12-04 08:10:21 25 4
gpt4 key购买 nike

我有一个包含 200 列和大约 5 亿条记录的数据框“DF”。我有另一个值列表作为“l”。我想检查列表 l 中的每个值,每个值都出现在我的 Dataframe DF 的哪一列中。

例如,

l = [101,102,103,104,105] 

DF =

col1,col2,col3

1,2,101

2,3,102

3,103,4

4,104,5

105,5,6

6,105,7

我的输出应该如下:

101,col3

102,col3

103,col2

104,col2

105,col1

105,col2

最佳答案

使用 stack 反透视数据帧,然后使用 isin 过滤数据帧:

import pyspark.sql.functions as F

l = [101,102,103,104,105]

df2 = df.selectExpr("""
stack(3, col1, 'col1', col2, 'col2', col3, 'col3') as (val, col)
""").filter(
F.col('val').isin(l)
)

df2.show()
+---+----+
|val| col|
+---+----+
|101|col3|
|102|col3|
|103|col2|
|104|col2|
|105|col1|
|105|col2|
+---+----+

关于python - PySpark - 检查值列表是否存在于 Dataframe 的任何列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66001973/

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