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

如何使用Pandas计算2020年上下半年客户消费金额的增减情况

Pandas快速计算客户上下半年消费增减幅度实现方案

核心思路为「数据清洗→周期标签标记→分组聚合→行列转换→增幅计算」,仅需数行代码即可完成需求,具体实现如下:


完整实现代码

1. 导入依赖并构造示例数据

import pandas as pd

# 构造示例数据
data = {
    "Customer": ["A", "B", "A", "A", "A", "B", "C"],
    "Date (YYYYMM)": [202001, 202001, 202002, 202003, 202004, 202002, 202001],
    "Spend": ["$200", "$400", "$500", "$200", "$700", "$100", "$50"]
}
df = pd.DataFrame(data)

2. 数据预处理

# 去掉消费金额的$符号,转换为数值类型
df["Spend"] = df["Spend"].str.replace("$", "", regex=False).astype(int)

# 筛选2020年全年数据,给每条数据打上半年/下半年标签
# h1代表2020年上半年,h2代表2020年下半年
df = df[df["Date (YYYYMM)"].between(202001, 202012)].copy()
df["period"] = df["Date (YYYYMM)"].apply(lambda x: "h1" if x <= 202006 else "h2")

3. 聚合各客户各周期消费总额

# 按客户+周期分组求和,转为宽表格式,缺失的周期消费额默认填0
period_spend = df.groupby(["Customer", "period"])["Spend"].sum().unstack(fill_value=0)

4. 计算消费增减幅度

# 计算增幅百分比,保留2位小数,同时处理上半年消费为0的除零异常
period_spend["increase_rate(%)"] = period_spend.apply(
    lambda x: round((x["h2"] - x["h1"])/x["h1"] * 100, 2) if x["h1"] != 0 else float("inf") if x["h2"] > 0 else 0,
    axis=1
)

结果说明

示例数据中所有消费都集中在上半年,因此输出结果如下:

Customerh1h2increase_rate(%)
A16000-100.0
B5000-100.0
C500-100.0

如果需要关联其他客户属性,对period_spend执行reset_index()后再和原表merge即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 18:15:04