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

使用R按组求和并生成年度面板数据的技术问询

解决思路与代码实现

问题核心

原始数据集包含公司名称(Name)、城市代码(Cod)、获天线安装许可年份(year_l)、当年安装数量(count),需要扩展为年度面板数据,展示每家公司在对应城市每年的累计天线总数——核心是补全每个公司-城市组合的所有年份记录,并逐年累加安装量。

原始数据集示例

Name    Cod  year_l  count
A       001  2018    5
A       001  2020    3
B       002  2019    4

目标数据集示例

Name    Cod  year  cumulative_count
A       001  2018  5
A       001  2019  5
A       001  2020  8
B       002  2018  0
B       002  2019  4
B       002  2020  4

实现步骤(以Pandas为例)

  1. 生成完整年份序列:先确定数据集的年份范围,为每个公司-城市组合生成该范围内的所有年份记录。
  2. 匹配原始数据:用左连接把原始数据的安装量匹配到对应年份,缺失年份的安装量填0。
  3. 计算累计值:按公司-城市分组,对安装量做逐年累加得到累计天线数。

完整代码

import pandas as pd

# 加载原始数据(替换成你的数据集路径即可)
df = pd.DataFrame({
    'Name': ['A', 'A', 'B'],
    'Cod': ['001', '001', '002'],
    'year_l': [2018, 2020, 2019],
    'count': [5, 3, 4]
})

# 1. 确定年份范围(可手动调整成你需要的起止年份)
min_year = df['year_l'].min()
max_year = df['year_l'].max()
years = pd.DataFrame({'year': range(min_year, max_year + 1)})

# 2. 生成所有公司-城市-年份的完整组合
unique_groups = df[['Name', 'Cod']].drop_duplicates()
full_panel = unique_groups.merge(years, how='cross')

# 3. 合并原始数据,填充缺失年份的安装量为0
full_panel = full_panel.merge(
    df.rename(columns={'year_l': 'year'}),
    on=['Name', 'Cod', 'year'],
    how='left'
).fillna({'count': 0})

# 4. 按公司-城市分组计算累计值
full_panel['cumulative_count'] = full_panel.groupby(['Name', 'Cod'])['count'].cumsum()

# 整理最终输出的列顺序
full_panel = full_panel[['Name', 'Cod', 'year', 'cumulative_count']]
print(full_panel)

常见问题修正

  • 如果需要扩展年份范围(比如从2017到2021),直接修改min_year和max_year的数值即可。
  • 若原始数据存在重复的公司-城市-年份记录,先做聚合处理:df = df.groupby(['Name', 'Cod', 'year_l'])['count'].sum().reset_index()。
  • 确保分组时用['Name', 'Cod']作为键,避免不同城市或公司的累计值混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:35:29