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

如何将data1数据逐行填充至cohort_table2对应行列并累加Closed.Won.MRR值?

问题描述

现有数据集data1包含Close.Date、Closed.Won.MRR、Sign.up.Date三列,样本数据如下:

Close.Date Closed.Won.MRR Sign.up.Date
2020-04         447.0     2020-02
2020-03         100.0     2020-02
2022-04         536.4     2022-03
2022-06         150.0     2022-03
2022-06         125.0     2022-03
2022-06         147.0     2021-10
...                 ...        ....

已创建空DataFrame cohort_table2,其行以Sign.up.Date的所有可能值作为Period列内容,列以Close.Date的所有可能值作为列名,初始值均为0,结构如下:

Period    2020-02  2020-03  2020-04  ... ... ..  
2020-02      0        0        0
2020-03      0        0        0
2020-04      0        0        0
.
.
. 
.

需求:将data1中每条记录的Closed.Won.MRR值累加至cohort_table2对应的(Sign.up.Date行,Close.Date列)位置,处理完所有记录。例如某条记录:

Close.Date Closed.Won.MRR Sign.up.Date
2022-04         447.0     2022-04

需将447.0填入cohort_table2中Period为2022-04的行、列名为2022-04的位置;处理前两条记录后,cohort_table2结构如下:

Period    2020-02  2020-03  2020-04  ... ... ..  
2020-02      0      100        447
2020-03      0        0        0
2020-04      0        0        0
.
.
. 
.
实现方案

方法1:用Pandas透视表(高效推荐)

直接用透视表聚合数据,再和空表对齐填充,避免低效的逐行循环:

import pandas as pd

# 按注册日期和成交日期分组,聚合MRR求和
agg_data = data1.pivot_table(
    index='Sign.up.Date',
    columns='Close.Date',
    values='Closed.Won.MRR',
    aggfunc='sum',
    fill_value=0
)

# 调整索引名称匹配cohort_table2的Period列
agg_data.index.name = 'Period'

# 将聚合数据填充到预先创建的cohort_table2中,自动匹配行列
cohort_table2 = agg_data.reindex_like(cohort_table2).fillna(0)

# 如果cohort_table2已存在,也可以直接用update更新值
# cohort_table2.update(agg_data)

方法2:逐行遍历实现(按题目要求的方式)

如果必须按题目要求逐行遍历数据,可使用iterrows()循环:

for _, row in data1.iterrows():
    sign_up = row['Sign.up.Date']
    close = row['Close.Date']
    mrr = row['Closed.Won.MRR']
    # 累加对应位置的数值
    cohort_table2.loc[sign_up, close] += mrr

注意:此方法在数据量大时效率极低,优先推荐方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:45:15