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

如何使用Python的pivot_table函数生成指定产品的月度销售数据透视表

使用pivot_table实现指定产品的月度销售数据宽表转换

没问题,我来一步步教你怎么用pivot_table实现你要的效果,还能适配大量产品的场景:

第一步:数据预处理

首先得把你的数据调整成适合透视的格式,尤其是月份格式要转成Period(M),还要清理掉客户名和产品名里多余的点(看你示例里的eric.和A.都被处理了):

import pandas as pd

# 先构造你的示例DataFrame
data = {
    'customer': ['sam', 'tim', 'mi.', 'harry', 'eric.'],
    'product': ['A', 'A', 'B', 'A', 'A.'],
    'month': ['2021-11', '2021-12', '2021-10', '2011-11', '2021-10'],
    'revenue': [221, 220, 213, 210, 213]
}
df = pd.DataFrame(data)

# 1. 把month列转成Period(M)类型
df['month'] = pd.to_datetime(df['month']).dt.to_period('M')

# 2. 清理customer和product列末尾的多余点(和你的输出示例匹配)
df['customer'] = df['customer'].str.rstrip('.')
df['product'] = df['product'].str.rstrip('.')

第二步:筛选目标产品

因为你需要指定产品,直接用布尔索引筛选就行,比如我们要产品A:

target_product = 'A'
# 可选:如果只需要2021年的数据,加上年份过滤(匹配你的示例输出)
df_target = df[(df['product'] == target_product) & (df['month'].dt.year == 2021)].copy()

第三步:用pivot_table生成宽表

这一步是核心,参数设置好就能直接得到你要的格式:

pivot_result = pd.pivot_table(
    df_target,
    index=['customer', 'product'],  # 行维度:每个客户-产品组合一行
    columns='month',                # 列维度:把月份转成列
    values='revenue',               # 填充的数值是收入
    aggfunc='sum',                  # 处理重复数据(如果有同一个客户-产品-月多条数据就求和)
    fill_value=0                    # 缺失的月份填充0
).reset_index()  # 把索引转成普通列,和你的输出格式一致

第四步:调整列顺序(可选)

如果想要月份按时间顺序排列,可以手动排序列:

# 提取月份列并排序
sorted_months = sorted(pivot_result.columns[2:])
# 重新排列列
pivot_result = pivot_result[['customer', 'product'] + sorted_months]

最终输出

运行完上面的代码,pivot_result就是你要的格式:

customer product 2021-10 2021-11 2021-12
0     eric       A     213       0       0
1      sam       A       0     221       0
2      tim       A       0       0     220

关键参数说明

  • index=['customer', 'product']:确保每个客户和产品的组合作为唯一行,不会出现重复行
  • aggfunc='sum':保险起见,防止出现同一个客户同一个月多次购买的情况,会自动求和
  • fill_value=0:完美解决缺失月份的填充问题,不用额外处理空值

如果要处理其他产品,只需要修改target_product的值就行,完全适配大量产品的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:17:38