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

Pandas中如何正确实现DataFrame逐行与等长Series求和

问题原因

pandas 做DataFrame和Series的算术运算时,默认按照行索引做对齐广播。直接调用df.add(series)时,pandas会拿Series的索引和DataFrame的行索引做匹配,匹配失败的位置就会填充NaN,最终生成两个索引并集的列,也就是你看到的列数翻倍、全为NaN的结果。

解决方案

要实现「每一列都加上Series对应位置的值」的逐行相加效果,只需要明确告诉pandas按列索引对齐做广播即可,有两种常用写法:

  • 写法1:指定add方法的axis参数,按列对齐
    如果你的Series索引和DataFrame的列名完全对应,这是最稳妥的写法,不会因为元素顺序错位导致计算错误:
    # axis='columns' 和 axis=1 效果完全一致
    result = df.add(series, axis=1)
    
  • 写法2:直接取Series的底层数值数组,跳过索引对齐
    如果你的Series索引和DataFrame列名不匹配、但元素顺序和DataFrame列顺序完全对应,可以直接取Series的numpy数组做运算,绕开索引对齐逻辑:
    result = df + series.values
    
示例验证

用你给出的测试数据跑通验证:

import pandas as pd

# 构造测试数据
df = pd.DataFrame(
    data=[[1,2,3], [4,5,6], [7,8,9], [0,0,0]],
    index=['d', 'e', 'f', 'g'],
    columns=['a', 'b', 'c']
)
series = pd.Series([1,2,3])

# 执行计算
result = df.add(series.values, axis=1)
print(result)

运行输出完全符合预期:

a   b   c
d  2   4   6
e  5   7   9
f  8  10  12
g  1   2   3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:03:22