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

PySpark如何将字典键列表插入DataFrame列并实现展开?

解决方案

假设你已有一个示例DataFrame,比如:

import pandas as pd

my_dict = {"A":"1","B":"2","C":"3","D":"4"}
# 示例原DataFrame
df = pd.DataFrame({"原列": ["值1", "值2"]})

步骤1:生成字典的键列表

直接提取字典的键并转为列表:

keys_list = list(my_dict.keys())

步骤2:为DataFrame新增包含键列表的列

将列表批量赋值给新列,确保每个单元格都完整保留整个列表:

df["键列表列"] = [keys_list] * len(df)

或者用pandas的广播特性实现:

df["键列表列"] = pd.Series([keys_list]).repeat(len(df))

步骤3:使用explode展开列表为多行

调用explode()方法对目标列进行行展开:

df_expanded = df.explode("键列表列")

完整代码示例

import pandas as pd

my_dict = {"A":"1","B":"2","C":"3","D":"4"}
df = pd.DataFrame({"原列": ["值1", "值2"]})

# 生成键列表
keys_list = list(my_dict.keys())
# 添加列表列
df["键列表列"] = [keys_list] * len(df)
# 展开多行
df_expanded = df.explode("键列表列")

print(df_expanded)

运行后输出结果:

原列 键列表列
0  值1     A
0  值1     B
0  值1     C
0  值1     D
1  值2     A
1  值2     B
1  值2     C
1  值2     D

如果之前尝试失败,大概率是添加列表列时的方式错误——比如直接写df["键列表列"] = keys_list,这会让pandas试图将列表的每个元素对应到单行,而非把整个列表放入每个单元格,上面的两种赋值方式可以规避这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:10:31