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

如何简化Pandas中从DataFrame生成多年度FunderCode统计合并表的流程?

高效实现多年度FunderCode统计合并

你可以用pandas的**透视表(pivot_table)或者交叉表(crosstab)**直接一步完成,不用逐年筛选再合并,尤其适合多年份场景:

方法一:使用pivot_table

  1. 先从OrderStartDate提取年份,生成新列Year
  2. 按FunderCode和Year分组计数,再转成宽表格式
# 提取年份
df['Year'] = df['OrderStartDate'].dt.year

# 生成透视表,统计每个FunderCode在各年份的出现次数
result = df.pivot_table(
    index='FunderCode',
    columns='Year',
    values='ClientI',  # 用任意非空列计数都可以
    aggfunc='count',
    fill_value=0  # 没有数据的年份填充0
).rename(columns=lambda x: f'Count_{x}').reset_index()

方法二:使用crosstab

交叉表更简洁,直接统计两个列的频次分布:

# 提取年份
year_col = df['OrderStartDate'].dt.year

# 生成交叉表并重命名列
result = pd.crosstab(
    index=df['FunderCode'],
    columns=year_col
).rename(columns=lambda x: f'Count_{x}').reset_index()

结果展示

针对你的原始数据,两种方法都会得到如下结果:

FunderCode  Count_2017  Count_2018  Count_2019
0         H2           3           0           0
1         H3           0           1           0
2         H4           0           0           1

优势说明

  • 不管涉及多少年份,只需要一次操作,无需重复编写筛选、统计、合并的冗余代码
  • 自动处理缺失年份的填充(通过fill_value=0),避免合并时出现数据不匹配的问题
  • 代码简洁易维护,大幅降低出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:45:37