如何对除指定列外其余列均相同的两个DataFrame的指定列求和?
没问题,我来帮你搞定这个需求!既然两个DataFrame除了要加和的col1列之外,其他列内容完全一致,那我们可以直接对目标列做元素级加法,再结合共享列生成结果就行。
对两个DataFrame指定列求和的实现方案
完整代码示例
import pandas as pd import numpy as np # 初始化示例中的两个DataFrame df1 = pd.DataFrame({'col1': [3.2, 4.4, 6.5, np.NaN], 'col2': [1.2, 2.2, np.NaN, 5.7]}) df2 = pd.DataFrame({'col1': [1.0, 2.0, 3.0, 4.0], 'col2': [1.2, 2.2, np.NaN, 5.7]}) # 对指定列col1求和,同时保留完全一致的共享列col2 result_df = pd.DataFrame({ 'col1_sum': df1['col1'] + df2['col1'], 'col2': df1['col2'] # 因为两个df的col2完全一致,取df1或df2的都可以 }) print(result_df)
运行输出结果
col1_sum col2 0 4.2 1.2 1 6.4 2.2 2 9.5 NaN 3 NaN 5.7
补充说明
- Pandas的Series支持直接元素级运算,这里
df1['col1'] + df2['col1']会自动对应行相加,遇到NaN时结果也会是NaN,符合常规数值运算逻辑。 - 如果需要对多列求和,可以用循环批量处理,比如:
# 假设要对col1、col3这两列求和 sum_cols = ['col1', 'col3'] result_df = pd.DataFrame() # 批量生成求和列 for col in sum_cols: result_df[f'{col}_sum'] = df1[col] + df2[col] # 把所有共享列添加到结果中 shared_cols = [col for col in df1.columns if col not in sum_cols] result_df[shared_cols] = df1[shared_cols]
内容的提问来源于stack exchange,提问作者Alien13
相关产品推荐
相关产品推荐

