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

高效实现Pandas DataFrame基于字典映射计算新增列

百万级Pandas DataFrame高效计算TOTAL_COST列的方案

对于百万级别的DataFrame,最高效的实现方式是用Pandas向量化操作——全程依赖底层基于C实现的NumPy/Pandas内置函数,完全避免Python层面的循环或apply(apply本质是逐行调用Python函数,速度会慢几个数量级)。

核心思路

  1. 将系数字典转换成与DataFrame列名匹配的Series,实现自动列对齐
  2. 提取对应列与系数相乘,按行求和得到每行的系数总和
  3. 用系数总和乘以COST列,得到最终的TOTAL_COST

代码实现

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'ID': [1,2,3,4],
    'COST': [362,269,346,342],
    '1F': [0,0,1,0],
    '2F': [1,1,1,0],
    '3F': [1,0,1,0],
    '4G': [1,0,1,0]
})

# 系数字典
total_cost = {'1F': 0.047,'2F': 0.03,'3F': 0.023,'4G': 0.025}

# 转换为与列匹配的系数Series
coeffs = pd.Series(total_cost)

# 高效计算TOTAL_COST
df['TOTAL_COST'] = df[coeffs.index].mul(coeffs).sum(axis=1) * df['COST']

# 输出结果
print(df)

结果验证

运行后得到的DataFrame与预期完全一致:

IDCOST1F2F3F4GTOTAL_COST
1362011128.236
226901008.07
3346111143.25
434200000

额外说明

如果系数字典中存在DataFrame没有的列名,可以先过滤掉不匹配的键,避免报错:

coeffs = pd.Series(total_cost)
coeffs = coeffs[coeffs.index.isin(df.columns)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:45:56