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

Pandas中如何实现多行DataFrame与单行同列DataFrame逐列相加

实现方法

核心逻辑是保留Id标识列不对其做运算,对两个DataFrame的同名字段做广播加法,同时规避pandas默认按行索引对齐导致的空值问题,具体代码如下:

import pandas as pd

# ----------------------
# 1. 构造测试数据(实际使用时替换为你自己的X、y读取逻辑即可)
# ----------------------
X = pd.DataFrame({
    'Id': [1, 2, 3],
    'Jakarta': [10, 20, 30],
    'Bandung': [40, 50, 60]
})

y = pd.DataFrame({
    'Jakarta': [11],
    'Bandung': [12]
})

# ----------------------
# 2. 计算相加结果
# ----------------------
Xplusy = X.copy() # 复制原表避免修改原始X的数据
# 自动识别两个表的同名列,不需要手动硬编码列名
common_columns = X.columns.intersection(y.columns)
# 取y的第一行数值做广播加法,自动匹配列名逐行相加
Xplusy[common_columns] = X[common_columns] + y[common_columns].iloc[0]

执行后打印Xplusy就能得到你需要的结果:

Id  Jakarta  Bandung
0   1       21       52
1   2       31       62
2   3       41       72

注意事项

  • 不要直接写X + y或者X[common_columns] + y[common_columns]:pandas默认会同时对齐行索引和列名,y只有1行数据,行索引和X的其余行不匹配时,会返回NaN空值,无法得到正确结果
  • 用intersection()取同名列的写法兼容性更好,后续两个表新增同名字段时不需要修改计算逻辑,会自动参与加法运算
  • 调用copy()是为了避免修改原始X表的数据,如果不需要保留原X数据,可以省略该步骤直接在X上修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:30:54