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

Pandas中单元格为列表的两个DataFrame如何实现逐元素相减

逐单元格列表元素减法实现方案

最高效实现方法

利用numpy的向量化运算能力完成,比纯Python循环遍历效率高1~2个量级,适配大数量级的DataFrame计算场景。

完整实现代码

import pandas as pd
import numpy as np

# 构造示例数据(实际使用时替换为你自己的df1、df2即可)
df1 = pd.DataFrame({
    "l1": [[4,2,1]],
    "l2": [[8,9,6]],
    "l3": [[7,4,5]]
})
df2 = pd.DataFrame({
    "l1": [[2,1,0]],
    "l2": [[7,7,2]],
    "l3": [[6,1,2]]
})

# 核心运算逻辑
# 1. 将两个DataFrame的单元格列表转为numpy数组,利用数组广播特性完成减法
new_df = df1.applymap(np.array) - df2.applymap(np.array)
# 2. 若需要结果单元格仍为列表格式,添加一步类型转换即可
new_df = new_df.applymap(lambda arr: arr.tolist())

运行结果

输出的new_df完全匹配需求格式:

序号l1l2l3
0[2, 1, 1][1, 2, 4][1, 3, 3]

优化建议

如果日常高频需要做这类单元格内的序列运算,建议初始化DataFrame时就将单元格内容存储为numpy数组而非Python列表,后续运算时可省略类型转换步骤,直接执行new_df = df1 - df2即可得到结果,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:15:00