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

R语言:跨不同长度数据框按多条件对ID求和

解决不同长度数据框按条件求和的问题

嘿,很高兴帮你解决这个问题!看起来你需要把两个不同结构的数据框关联起来,按「颜色为蓝色且类型为2」的条件计算对应ID的价格总和,没符合条件的就返回0对吧?我用Python的pandas来给你一步步实现:

步骤1:模拟输入数据框

首先我们先把你给出的示例数据转换成pandas数据框:

import pandas as pd

# 第一个ID映射数据框
df_id = pd.DataFrame({
    'ID': [1, 2, 3],
    'Code': ['A', 'B', 'C']
})

# 第二个详细数据框
df_details = pd.DataFrame({
    'ID': ['A', 'A', 'B', 'B', 'C', 'C'],
    'Color': ['Green', 'Blue', 'Green', 'Blue', 'Green', 'Blue'],
    'Type': [1, 2, 3, 2, 2, 4],
    'Price': [5, 6, 7, 2, 4, 5]
})

步骤2:筛选符合条件的行

先从详细数据框里挑出满足「Color=Blue且Type=2」的记录:

filtered_details = df_details[(df_details['Color'] == 'Blue') & (df_details['Type'] == 2)]

步骤3:按Code分组求和价格

对筛选后的结果按ID(也就是对应第一个数据框的Code)分组,计算价格总和:

summed_prices = filtered_details.groupby('ID')['Price'].sum().reset_index(name='Total_Price')

步骤4:关联两个数据框并填充缺失值

把求和结果和第一个ID映射数据框做左连接,这样能保留所有原始ID,没有匹配到的就用0填充价格:

final_result = df_id.merge(summed_prices, left_on='Code', right_on='ID', how='left')
# 整理列名并填充缺失值
final_result = final_result.rename(columns={'ID_x': 'ID', 'Code': 'Associated_ID'}).drop(columns='ID_y')
final_result['Total_Price'] = final_result['Total_Price'].fillna(0)

最终结果

运行完上面的代码后,final_result就是你想要的输出:

ID Associated_ID  Total_Price
0   1             A          6.0
1   2             B          2.0
2   3             C          0.0

如果你的实际数据有特殊格式(比如ID列名不同、数据类型不一致),可以调整代码里的列名或者先做数据类型转换。要是还有其他需求,也可以补充说明哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:46