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

如何以向量化或单行代码方式合并两个DataFrame生成字典格式单元格?

问题与解决方案

问题

现有两个Pandas DataFrame:

df1 = pd.DataFrame({"col1": [1, 2, 3],
                  "col2": [4, 5, 6],
                  "col3":[7, 8, 9]})

和

df2 = pd.DataFrame({"colA": [10, 20, 30],
                  "colB": [40, 50, 60],
                  "colC":[70, 80, 90]})

需要将二者按位置合并,生成新DataFrame,每个单元格格式为{df1对应值: df2对应值},预期结果如下:

col1     col2    col3
{1:10}  {2:20}  {3:30}
{4:40}  {5:50}  {6:60}
{7:70}  {8:80}  {9:90}

由于数据量极大,需避免循环或apply类低效方案,采用向量化或单行高效代码实现。

最优解决方案

使用Numpy的vectorize函数实现元素级的字典构造,结合Pandas生成结果DataFrame,这是适合大数据量的高效向量化方案:

import pandas as pd
import numpy as np

df1 = pd.DataFrame({"col1": [1, 2, 3],
                  "col2": [4, 5, 6],
                  "col3":[7, 8, 9]})

df2 = pd.DataFrame({"colA": [10, 20, 30],
                  "colB": [40, 50, 60],
                  "colC":[70, 80, 90]})

# 单行高效代码
result = pd.DataFrame(np.vectorize(lambda x, y: {x: y})(df1.values, df2.values), columns=df1.columns)

方案说明

  • np.vectorize会将传入的lambda函数应用到两个数组(df1.values和df2.values)的对应元素上,实现元素级的字典构造,底层借助Numpy的优化机制,比纯Python循环或applymap快得多。
  • 最终用生成的二维数组构造新DataFrame,沿用df1的列名,完全符合需求格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:54:31