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

如何仅对两个Pandas DataFrame的指定对应列进行相加操作?

解决Pandas仅指定列相加的问题

嘿,这个需求很清晰——要保留ID和atext列不变,只对var1到var25这些列进行对应相加对吧?直接用add()确实会把所有列都加起来,咱们可以用下面几种方法精准控制:

方法一:用filter()快速匹配目标列

如果你的目标列都是以var开头的(比如var1、var2...var25),用filter(like='var')可以一键提取这些列,不用手动列全25个列名:

# 先复制需要保留的列到新DataFrame
absum_df = a_df[['ID', 'atext']].copy()
# 提取所有var开头的列,相加后赋值到新DataFrame
var_cols = a_df.filter(like='var').columns
absum_df[var_cols] = a_df[var_cols].add(b_df[var_cols])

方法二:手动指定目标列列表

如果列名规则明确(比如就是var1到var25),也可以用列表推导式生成列名列表,精准定位:

# 生成var1到var25的列名列表
var_cols = [f'var{i}' for i in range(1, 26)]
# 复制原DataFrame的所有列,然后只更新var列的值
absum_df = a_df.copy()
absum_df[var_cols] = a_df[var_cols].add(b_df[var_cols])

这种方式的好处是完全可控,不会误匹配其他带var的列(如果有的话)。

额外提醒:确保行对齐

要注意两个DataFrame的行是一一对应的哦!如果ID是唯一标识,最好先按ID对齐,避免错位相加:

# 先把ID设为索引,保证对应行匹配
a_df = a_df.set_index('ID')
b_df = b_df.set_index('ID')

# 执行相加操作
absum_df = a_df[['atext']].copy()
absum_df[var_cols] = a_df[var_cols].add(b_df[var_cols])

# 最后把ID还原成列
absum_df = absum_df.reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:58