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

会计月份划分及各会计月销售涨幅最高区域表生成问题求助

解决方案

1. 正确计算会计月

首先确保日期列是datetime类型,然后根据日期的日部分判断所属会计月:如果日期在当月1-14日,归属到上月会计月;15日及以后归属到当月会计月,最后格式化为示例中的MMM'YY格式。

代码实现

import pandas as pd
import numpy as np

# 转换日期列为datetime类型(匹配输入的日-月-年格式)
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')

# 计算会计月
df['Accounting Month'] = np.where(
    df['Date'].dt.day < 15,
    # 1-14日:归属上月会计月
    df['Date'] - pd.DateOffset(months=1),
    # 15日及以后:归属当月会计月
    df['Date']
).dt.strftime("%b'%y")

测试示例数据

运行后会得到和示例完全一致的结果:

DateRegionAccounting Month
2019-01-01NorthDec'18
2019-01-14SouthDec'18
2019-01-20WestJan'19
2019-02-04NorthJan'19

原代码问题说明

你之前的代码df['Date'] + pd.offsets.MonthBegin(-1) + pd.DateOffset(days=14)逻辑错误:

  • 它是给日期先回退到上月初再加14天,得到的是会计月的起始日期,但没有正确判断日期所属的会计月标识
  • 对于1-14日的日期,应该归属上月会计月,而非生成一个中间日期

2. 生成每个会计月销售百分比变化最高的区域表格

假设你的数据包含Sales列(销售额),我们需要先计算区域月度销售,再计算环比变化,最后提取每个会计月的最高变化区域。

代码实现

# 1. 按会计月+区域分组,计算月度销售总额
monthly_sales = df.groupby(['Accounting Month', 'Region'])['Sales'].sum().reset_index()

# 2. 按区域计算环比销售百分比变化(*100转为百分比格式)
monthly_sales['Sales Pct Change'] = monthly_sales.groupby('Region')['Sales'].pct_change() * 100

# 3. 提取每个会计月中销售百分比变化最高的区域
top_regions = monthly_sales.groupby('Accounting Month').apply(
    lambda x: x.loc[x['Sales Pct Change'].idxmax()]
).reset_index(drop=True)

# 输出markdown格式的结果表格
print(top_regions[['Accounting Month', 'Region', 'Sales Pct Change']].to_markdown(index=False))

输出示例(模拟数据)

Accounting MonthRegionSales Pct Change
Dec'18North12.5
Jan'19West28.3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:00:20