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

基于ConnectionID匹配的DataFrame合并与Value累加实现需求

解决方案

要实现将sp_server中相同ConnectionID的Value累加后,加到sp_client对应行的Value中,可以通过以下两种高效方法完成:

方法一:分组求和 + 合并赋值

  1. 计算sp_server中每个ConnectionID的Value总和
    由于sp_server存在重复的ConnectionID行,先按ID分组求和,得到每个ID的总累加值:

    import pandas as pd
    
    # 分组计算每个ConnectionID的Value总和
    server_total = sp_server.groupby('ConnectionID')['Value'].sum().reset_index()
    
  2. 合并DataFrame并更新Value
    用左连接将server_total合并到sp_client,确保保留sp_client原有的所有ID,再将对应总和加到原Value上:

    # 左连接合并,保留sp_client的所有行
    merged_df = sp_client.merge(server_total, on='ConnectionID', how='left', suffixes=('_orig', '_server'))
    
    # 处理无匹配的情况(用0填充),并更新Value
    merged_df['Value'] = merged_df['Value_orig'] + merged_df['Value_server'].fillna(0)
    
    # 提取最终需要的列,得到更新后的sp_client
    sp_client_updated = merged_df[['ConnectionID', 'Value']]
    

方法二:字典映射(更简洁)

将分组求和的结果转为字典,直接通过map方法匹配赋值,代码更紧凑:

# 生成{ConnectionID: 总Value}的字典
server_sum_map = sp_server.groupby('ConnectionID')['Value'].sum().to_dict()

# 直接映射并累加,无匹配的用0填充
sp_client['Value'] = sp_client['Value'] + sp_client['ConnectionID'].map(server_sum_map).fillna(0)

两种方法都无需手动编写复杂的条件判断,利用pandas的分组、合并或映射功能即可高效完成需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:24:13