基于多条件合并指定DataFrame行并求和
解决方案
可以通过替换ID值 + 分组聚合两步实现需求,具体代码如下:
步骤1:准备示例数据(已有DataFrame可跳过)
import pandas as pd data = { 'ID': ['AAA', 'CCC', 'BBB', 'DDD', 'AAA', 'CCC'], 'Date': ['2021-06-30', '2021-06-30', '2021-06-30', '2021-06-30', '2021-07-31', '2021-07-31'], 'EoM_Val': [100, 200, 50, 10, 40, 100], 'Val': [3, 2, 6, 7, 6, 2] } df = pd.DataFrame(data)
步骤2:替换并聚合
# 将ID列的AAA、CCC替换为XXX df['ID'] = df['ID'].replace({'AAA': 'XXX', 'CCC': 'XXX'}) # 按ID和Date分组,对EoM_Val、Val列求和 result_df = df.groupby(['ID', 'Date'], as_index=False)[['EoM_Val', 'Val']].sum()
执行后result_df即为目标结构:
ID Date EoM_Val Val 0 BBB 2021-06-30 50 6 1 DDD 2021-06-30 10 7 2 XXX 2021-06-30 300 5 3 XXX 2021-07-31 140 8
关键说明:
replace方法批量替换指定ID值,把AAA和CCC统一转为XXXgroupby(['ID', 'Date'])确保同一日期下的XXX行被合并求和,其他ID(如BBB、DDD)保持独立as_index=False让分组后的ID和Date作为普通列,避免成为索引,保持和原DataFrame一致的结构
内容的提问来源于stack exchange,提问作者ImNotSureAboutStats
相关产品推荐
相关产品推荐

