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

如何实现单一行Pandas DataFrame与多行DataFrame的对应列算术运算?

Pandas DataFrame对应列的加减乘运算实现

初始化数据

首先定义问题中的两个DataFrame:

import pandas as pd

df1 = pd.DataFrame({"Amounts": [1.1, 2.2, 3.3]})
df2 = pd.DataFrame({"A": [500, 600, 700, 800, 900], 
                    "B": [250, 750, 900, 500, 200], 
                    "C": [450, 125, 600, 200, 800]})

对应列减法运算

要实现df1的每个值对应减去df2的列(1.1减A列、2.2减B列、3.3减C列),可以利用Pandas的索引对齐和广播机制:

  1. 将df1的数值转换成Series,索引设置为df2的列名,确保值和列的对应关系
  2. 执行减法运算(支持直接用运算符或Pandas的sub方法)
# 生成匹配df2列名的Series
subtract_series = pd.Series(df1['Amounts'].values, index=df2.columns)

# 方法1:用运算符实现
result_sub = subtract_series - df2

# 方法2:用Pandas内置方法实现
# result_sub = df2.sub(subtract_series, axis='columns')

运算结果:

A      B      C
0 -498.9 -247.8 -446.7
1 -598.9 -747.8 -121.7
2 -698.9 -897.8 -596.7
3 -798.9 -497.8 -196.7
4 -898.9 -197.8 -796.7

对应列乘法运算

乘法的实现逻辑和减法完全一致,替换成乘法操作即可:

# 同样生成匹配列名的Series
multiply_series = pd.Series(df1['Amounts'].values, index=df2.columns)

# 方法1:用运算符实现
result_mul = df2 * multiply_series

# 方法2:用Pandas内置方法实现
# result_mul = df2.multiply(multiply_series, axis='columns')

运算结果:

A      B      C
0  550.0  550.0  1485.0
1  660.0  1650.0  412.5
2  770.0  1980.0  1980.0
3  880.0  1100.0  660.0
4  990.0   440.0  2640.0

注意事项

  • 用Series索引匹配的方式不依赖列的顺序,比直接用数组运算(如df1['Amounts'].values - df2.values)更鲁棒,推荐优先使用
  • Pandas会自动对齐索引/列名,只要Series的索引和df2的列名一一对应,就能自动完成逐列运算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:00:53