You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark如何筛选df2中列名属于df1.No_of_Question列值的列

正确实现代码

你需要先将df1里No_of_Question的取值拉取到Driver端转为Python本地列表,再用列表筛选df2的列:

# 提取要保留的列名,转为本地列表,加distinct是避免重复列名
keep_cols = [row["No_of_Question"] for row in df1.select("No_of_Question").distinct().collect()]
# 过滤df2不存在的列,避免运行报错
valid_cols = [c for c in keep_cols if c in df2.columns]
# 选择目标列得到结果
df2 = df2.select(*valid_cols)

之前写法失效的原因

  • F.collect_list()是Spark转换函数,返回的是Spark Column表达式对象,不是本地可迭代的列表,不能直接解包传入select,也无法跨DataFrame引用字段
  • df1.No_of_Question是Spark DataFrame的列对象,不是存储具体值的Python集合,直接用in做包含判断不会得到你预期的匹配结果

内容的提问来源于stack exchange,提问作者Turvy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:08