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

在Azure Databricks中用Pandas将多列转为单列字典格式

解决方案

原代码问题分析

  1. getFormsColumnsName函数中引用了未定义的cols变量,实际应该使用你定义的baseCols
  2. 使用df[formColumns].values.tolist()仅能生成纯值列表,无法将列名(问题标题)与回答对应成字典结构,这是导致异常输出的核心原因

方法1:PySpark 实现(适配Azure Databricks大数据场景)

Azure Databricks默认使用PySpark DataFrame,以下是分布式环境下的高效实现:

from pyspark.sql.functions import create_map, lit, col

# 定义保留的基础列
baseCols = ['id', 'name', 'email']
# 筛选出所有问题列(排除基础列)
formColumns = [col_name for col_name in df.columns if col_name not in baseCols]

# 构建键值对映射:将每个问题列名作为字典的键,列值作为对应的值
map_expression = create_map(*[lit(col) for pair in [(col, col) for col in formColumns] for col in pair])

# 生成最终结果DataFrame
result_df = df.select(*baseCols, map_expression.alias("responses"))
display(result_df)

方法2:Pandas 实现(适合小数据集场景)

如果你的数据量较小,也可以使用Pandas DataFrame处理:

baseCols = ['id', 'name', 'email']
formColumns = [col_name for col_name in df.columns if col_name not in baseCols]

# 对每行生成包含问题标题与回答的字典
df['responses'] = df[formColumns].apply(lambda row: row.to_dict(), axis=1)
# 仅保留需要的列
result_df = df[baseCols + ['responses']]
display(result_df)

内容的提问来源于stack exchange,提问作者Flávio Ravier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:40:28