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

pandas中将集合类型DataFrame转为关联另一表取值的字典类型DataFrame的方法

pandas 高效实现集合单元格转字典列表方案

核心思路利用pandas按行apply的原生能力,替代多层嵌套for循环,利用索引对齐特性匹配df2的对应行取值,性能远优于纯Python循环实现,尤其适合大数据量场景。

实现代码

import pandas as pd

# 测试数据和原示例一致
df1 = pd.DataFrame({"begin": [{"a", "b"}, {"b"}, {"c"}], "end": [{"x"}, {"z", "y"}, {"z"}]})
df2 = pd.DataFrame(
    {"a": [10, 10, 15], "b": [15, 20, 30], "c": [8, 12, 10], "x": [1, 2, 3], "y": [1, 3, 4], "z": [1, 3, 1]}
)

# 核心转换逻辑
df3 = df1.apply(
    lambda row: pd.Series([
        [{"letter": v, "value": df2.loc[row.name, v]} for v in cell] 
        for cell in row
    ]),
    axis=1
)
df3.columns = df1.columns

# 验证输出
print(df3)

说明

  • 因为df1中单元格存储的是无序集合,输出列表内字典的顺序会随集合遍历顺序变化,属于正常现象。如果需要固定排序,可在遍历集合时新增sorted()包裹,改为for v in sorted(cell)即可。
  • 该实现相比原三层嵌套循环,性能提升可达数倍到数十倍,数据量越大提升效果越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:57:03